60pts和题解思路一样,好像计数方法出错了,本蒟蒻看不出算错在哪
查看原帖
60pts和题解思路一样,好像计数方法出错了,本蒟蒻看不出算错在哪
931633
742643qh楼主2024/11/24 16:45

思路和题解是一样的先挑三张的,然后分情况计算,计算的方法看来看去觉得没错但是60pts

#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
const int N=1e6+10;
ll a[N];
ll num[10];
int t,n,ans;
int main(){
	ios::sync_with_stdio(false);
	cin>>t;
	while(t--){
		cin>>n;
		for(int i=1;i<=n;i++){
			cin>>a[i];
			num[3]+=a[i]/3;
			a[i]%=3;
			if(a[i]==2)
			  num[2]++;
			if(a[i]==1)
			  num[1]++;
		}
		if(num[3]<=(num[1]+num[2]*2)){
			if(num[3]<=num[1])
			  ans=num[1]+num[2];
			else
			  ans=num[2]+num[3]-(num[3]-num[1])/2;
		}
		else{
			ll temp=num[3]-num[2]*2-num[1];
			if(temp%4==1)
		       ans=num[1]+num[2]*2+ceil((3.0*temp)/4)+1;
		    else
		       ans=num[1]+num[2]*2+ceil((3.0*temp)/4);
		}
		cout<<ans<<"\n";
		ans=0;
		memset(num,0,sizeof(num));
		memset(a,0,sizeof(a));
	}
	return 0;
}
2024/11/24 16:45
加载中...