社区讨论

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 条回复,欢迎继续交流。

正在加载回复...