蒟蒻求助,暴力0分,玄关
  • 板块灌水区
  • 楼主Aakw_Tea
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/7/23 19:43
  • 上次更新2024/7/23 20:46:27
查看原帖
蒟蒻求助,暴力0分,玄关
1211960
Aakw_Tea楼主2024/7/23 19:43

rt

//过于神经
//别看他多,很易懂的/kk
#include <bits/stdc++.h>
using namespace std;
int a[1000001],k,ans,i,maxn=-1,f[4],lj=a[i],x,y,z,sum;
bool vis[1000001];
int main(){
	while(cin>>a[++k])
		;
	sort(a+1,a+k);
	for(i=1;i<k;i++){
		if(a[i]==4||a[i]==0)continue;
		else{
			x=y=z=0;
			for(int l=i+1;l<k;l++){
				sum=a[i];
				if(sum+a[l]<=4)
					sum+=a[l];
				f[1]=sum;
				if(sum>maxn){
					maxn=sum;
					x=l;y=0;z=0;
				}
				for(int j=l+1;j<k&&a[i]<=2;j++){
					sum=f[1];
					if(sum+a[j]<=4)
						sum+=a[j];
					f[2]=sum;
					if(sum>maxn){
						maxn=sum;
						x=l;y=j;z=0;
					}
					for(int r=j+1;r<k&&a[i]==1;r++){
						sum=f[2];
						if(sum+a[r]<=4)
							sum+=a[r];
						if(sum>maxn){
							maxn=sum;
							x=l;y=j;z=r;
						}
					}
				}	
			}
			if(x+y+z>0){
				a[x]=a[y]=a[z]=0;
				ans++;
			}
		}
	}
	cout<<i-ans-1;
	return 0;
}

给点优化的思路吧/kk

2024/7/23 19:43
加载中...