贪心求调
查看原帖
贪心求调
797897
_QyGyQ_楼主2024/12/2 16:51
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e6+7;

int v[N];
signed main(){
	int t;
	cin>>t;
	while(t--){
		int q1,q2,q3;
		q1=q2=q3=0;
		int n;
		cin>>n;
		int ans=0;
		for(int i=1;i<=n;i++){
			cin>>v[i];
			q3+=v[i]/3;
			if(v[i]%3==1) q1++;
			if(v[i]%3==2) q2++;
		}
		//cout<<q1<<" "<<q2<<" "<<q3<<"\n";
		if(q3<=q1){
			ans=q3+q2+(q1-q3);
		}
		else{
			ans+=q1;
			q3-=q1,q1=0;
			if(q3<=q2*2){
				ans+=q3;
				if(q3%2==0){
					q2-=(q3/2);
				}
				else{
					q2-=(q3/2);
					q1++;
				}
				ans+=(q2+q1);
			}
			else{
				ans+=q2;
				q2=0;
				int ch=(ceil(q3*1.0/4.0));
				int card=ch*3;
				q3-=ch;
				ans+=q3;
				
				card-=q3;
				ans+=card/2;
				if(card&1) ans++;
			}
		}
		cout<<ans<<"\n";
	}
	return 0;
}
/*

x
3*x
3*x>=q3-x
4x>=q3
x>=q3/4

*/
2024/12/2 16:51
加载中...