求救QAQ改不出来

题在这里: 舞蹈演出 - 题目详情 - 信友队 (xinyoudui.com)
救救我吧不会改了

#include<bits/stdc++.h>
using namespace std;
long long t,n,k,a[200005];
long long l;
long long r;

bool check(long long k){
	priority_queue<long long> pq;
	for(int i=0;i<k;i++){
		pq.push(a[i]);
	}
	long long mx=0;
	for(int i=k;i<n;i++){
		long long tmp=pq.top();
		pq.pop();
		pq.push(a[i]+tmp);
		mx=max(mx,a[i]+tmp);
	}
	return mx<=t;
	
}
int main(){
	l=1;
	scanf("%lld%lld",&n,&t);
	r=n;
	for(int i=1;i<=n;i++){
		scanf("%lld",a+i);
		
	}
	while(l<r){
		long long mid=(l+r)/2;
		if(check(mid)){
			r=mid;
		}else{
			l=mid+1;
		}
	
	}
	printf("%lld\n",r);
	
	
	return 0;
}
2 个赞

403 :sweat_smile:

2 个赞

^^^cpp
#include<bits/stdc++.h>
using namespace std;
long long t,n,k,a[200005];
long long l;
long long r;

bool check(long long k){
priority_queue<long long,vector,greater> pq;
for(int i=0;i<k;i++){
pq.push(a[i]);
}
long long mx=0;
for(int i=k;i<n;i++){
long long tmp=pq.top();
pq.pop();
pq.push(a[i]+tmp);
mx=max(mx,a[i]+tmp);
}
return mx<=t;

}
int main(){
l=1;
scanf(“%lld%lld”,&n,&t);
r=n;
for(int i=1;i<=n;i++){
scanf(“%lld”,a+i);

}
while(l<r){
	long long mid=(l+r)/2;
	if(check(mid)){
		r=mid;
	}else{
		l=mid+1;
	}

}
printf("%lld\n",l);


return 0;

}

1 个赞