加强数据
查看原帖
加强数据
376827
FCJ666楼主2023/7/17 11:28
#include<bits/stdc++.h>
using namespace std;
int n,sum;
long long last;
struct pp{
	long long t1,t2;
}b[2*100010];
bool cmp(pp a,pp b){return a.t2<b.t2;}
priority_queue<long long> q;
int main(){
	scanf("%d",&n);
	for(int i=1,tmp;i<=n;i++){
		scanf("%lld%lld",&b[i].t1,&b[i].t2);
		tmp=b[i].t2;
		b[i].t2=b[i].t1+b[i].t2;
		b[i].t1=tmp;
	}
	sort(b+1,b+1+n,cmp);
	for(int i=1;i<=n;i++){
		if(q.empty()&&b[i].t2-b[i].t1>=0){
			q.push(b[i].t1);
			sum++;
			last=last+b[i].t1;
			continue;
		}
		if(q.size()){
			if(last>=b[i].t2-b[i].t1&&b[i].t1<q.top()){
				last=last-q.top()+b[i].t1;
				q.pop();
				q.push(b[i].t1);
				continue;
			}
			if(last<b[i].t2-b[i].t1){
				last+=b[i].t1;
				q.push(b[i].t1);
				sum++;
			}
		}
	}
	printf("%d\n%lld",sum,last);
	return 0;
} 

样例不对(输出3,9)也能AC...

因为代码是P4053 改的

最后发现问题出在28行和34行上:将28行的大于等于改成大于,34行的改成小于等于,酱才能既过样例又AC

2023/7/17 11:28
加载中...