社区讨论
95pts求调,必关
P1314[NOIP 2011 提高组] 聪明的质监员参与者 3已保存回复 12
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 12 条
- 当前快照
- 1 份
- 快照标识符
- @mezp9e2g
- 此快照首次捕获于
- 2025/08/31 21:01 5 个月前
- 此快照最后确认于
- 2025/11/04 06:07 3 个月前
CPP
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e6+10;
int w[N],s[N],f[N],v[N],ll[N],rr[N],n;
void pre(int W){
for(int i=1;i<=n;i++){
s[i]=s[i-1],f[i]=f[i-1];
if(w[i]>=W)s[i]++,f[i]+=v[i];
}
}
signed main()
{
int m,S,l=1e9+10,r=0,ans=0,res=1e12+10;
cin>>n>>m>>S;
for(int i=1;i<=n;i++){
cin>>w[i]>>v[i];
l=min(l,w[i]),r=max(r,w[i]);
}
for(int i=1;i<=m;i++) cin>>ll[i]>>rr[i];
int mid;
while(l<r){
mid=(l+r)>>1;
ans=0;
pre(mid);
for(int i=1;i<=m;i++){
int L=ll[i],R=rr[i];
ans+=(s[R]-s[L-1])*(f[R]-f[L-1]);
}
res=min(res,abs(ans-S));
if(ans>S)l=mid+1;
else r=mid;
memset(s,0,sizeof(s));
memset(f,0,sizeof(f));
}
cout<<res;
}
回复
共 12 条回复,欢迎继续交流。
正在加载回复...