蒟蒻WA on #2,求调,悬关
查看原帖
蒟蒻WA on #2,求调,悬关
681941
OIer_Hhy楼主2024/6/3 19:26
#include<bits/stdc++.h>
using namespace std;
const int maxn=5e5;
int t,n,m,b[maxn];
struct node{
	int time,id;
}a[maxn];
vector<int> win;
int cmp(node a,node b){
	return a.time<b.time||a.time==b.time&&a.id<b.id;
}
void solve(){
	win.clear();
	memset(b,0,sizeof b);
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>a[i].time;
		a[i].id=i;
	} 
	sort(a+1,a+n+1,cmp);
	int x=0,pos=0;
	for(int i=1;i<=n;i++) b[i]=i;
	for(int i=1;x+a[i].time<=m&&i<=n;i++){
		int y=x+a[i].time;
		int mostoptimal=a[i].id;
		if(i<=n&&y+a[i+1].time>m){
			while(x+a[i].time<=m&&i<=n){
				mostoptimal=max(a[i].id,mostoptimal);
				i++;
			} 
			i--;
		} 
		win.push_back(mostoptimal);
	}
	for(int i=0;i<win.size();i++) b[win[i]]--;
	b[n+1]=win.size();
	sort(b+1,b+n+2,greater<int>());
	for(int i=1;i<=n+1;i++){
		if(b[i]==win.size()){
			cout<<i<<endl;
			return ;
		}
	}
	
}
signed main(){
	cin>>t;
	while(t--) solve();
	return 0;
}

2024/6/3 19:26
加载中...