社区讨论

80pts,卡最后两个,玄关

P11323【MX-S7-T1】「SMOI-R2」Happy Card参与者 4已保存回复 8

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
8 条
当前快照
1 份
快照标识符
@m3v7dtlo
此快照首次捕获于
2024/11/24 14:13
去年
此快照最后确认于
2025/11/04 14:02
4 个月前
查看原帖
CPP
#include <iostream>
#include <cstdio>
#include <string.h>
#include <math.h>
#include <algorithm>
using namespace std;

#define int long long

inline int read(){
	int x=0,f=1;
	char c=getchar();
	while(c<'0'||c>'9'){
		if(c=='-') f=-1;
		c=getchar();
	}
	while(c>='0'&&c<='9'){
		x=x*10+c-'0';
		c=getchar();
	}
	return x*f;
}

int T;
int n;
int num[10];
int ans;

signed main(){
	T=read();
	for(int ttt=1;ttt<=T;++ttt){
		n=read();
		ans=0;
		for(int i=1;i<=8;++i) num[i]=0;
		for(int i=1;i<=n;++i){
			int val;
			val=read();
			if(val%4==0){
				num[3]+=val/4;
				num[1]+=val/4;
			}
			else{
				num[3]+=val/3;
				num[val%3]+=1;
			}
		}
        //cout<<num[1]<<" "<<num[2]<<" "<<num[3]<<endl;
		int sum=num[1]+num[2]*2;
		if(sum>=num[3]){
			if(num[1]>=num[3]){
				ans+=num[1];
				ans+=num[2];
				cout<<ans<<endl;
				continue;
			}
			else{
				ans+=num[1];
				num[3]-=num[1];
				ans+=num[3]+num[2]-num[3]/2;
				cout<<ans<<endl;
				continue;
			}
		}
		else{
			ans+=sum;
			num[3]-=sum;
			ans+=num[3]/4*3;
			num[3]%=4;
			if(num[3]==1||num[3]==2) ans+=2;
			if(num[3]==3) ans+=3;
			cout<<ans<<endl;
			continue;
		}
	}
	return 0;
}

回复

8 条回复,欢迎继续交流。

正在加载回复...