全WA read0和自测不同 求救 玄关
查看原帖
全WA read0和自测不同 求救 玄关
1470994
langmouren楼主2025/1/20 08:16

这段代码我自己测是能过的,但是提交上去全read0 WA,求救大佬们

#include<bits/stdc++.h>
using namespace std;

int ans,n,t; 
priority_queue<int> p;

bool chk(int k){
	int tmp=0;
	vector<int> v;
	priority_queue<int> q=p;
	for(int i=1;i<=k;i++){
		int num=q.top();
		q.pop();
		v.insert(lower_bound(v.begin(),v.end(),num,greater<int>()),num);
	}//维护一个单调减的vector 
	while(!v.empty()){
		int les=v[v.size()-1];//当前队列中最小的数 
		tmp+=les;
		for(int i=0;i<(int)v.size();i++){
			v[i]-=les;
		}
		while(v.back()==0){//如果减完变0了就删了 
			v.pop_back();
			if(!q.empty()){
				//cout<<q.top()<<endl;
				int num=q.top();
				q.pop();
				v.insert(lower_bound(v.begin(),v.end(),num,greater<int>()),num);
			}
		}
		if(tmp>t) {
			return false;
		}
	}
	return true;
}

int main(){
	cin>>n>>t;
	for(int i=1;i<=n;i++){
		int tmp;
		cin>>tmp;
		p.push(tmp);
	}
	int l=0;
	int r=n;
	while(l<=r){
		int mid=(l+r)/2;
		if(chk(mid)){
			ans=mid;
			r=mid-1;
		}else{
			l=mid+1;
		}
	}
	cout<<ans;
	return 0;
} 	
2025/1/20 08:16
加载中...