赞
踩
正解是用一个权值线段树什么的维护一下,取一下第K小值,但是我不会。只能打打暴力,发现数据比较水,也能过,就当练练模拟了。
#include<bits/stdc++.h> using namespace std; typedef pair<int,int> PII; const int N = 100010; vector<PII> d[N]; signed main() { int n,m,k;cin>>n>>m>>k; for(int i=1;i<=m;i++) { int l,r,c,p;cin>>l>>r>>c>>p; for(int j=l;j<=r;j++) d[j].push_back({p,c}); } for(int i=1;i<=n;i++) sort(d[i].begin(),d[i].end()); int res=0; for(int i=1;i<=n;i++) { int p=k; for(auto &[a,b]:d[i]) if(p>=b) res+=a*b,p-=b; else { res+=a*p; break; } } cout<<res; return 0; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。