社区讨论

555

P2392kkksc03考前临时抱佛脚参与者 3已保存回复 4

讨论操作

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

当前回复
4 条
当前快照
1 份
快照标识符
@lo2085zh
此快照首次捕获于
2023/10/23 05:52
2 年前
此快照最后确认于
2023/11/03 06:16
2 年前
查看原帖
CPP
#include<bits/stdc++.h>
#define ll long long
using namespace std;
bool dp[20005],dp2[20005],dp3[20005],dp4[20005];
int main(){
	dp[0]=true;
	dp2[0]=true;
	dp3[0]=true;
	dp4[0]=true;
	int n1,n2,n3,n4,x,sm=0,sm2=0,sm3=0,sm4=0;
	cin>>n1>>n2>>n3>>n4;
	for(int i=1;i<=n1;i++){
		cin>>x;
		sm+=x;
		//cout<<sm<<" ";
		for(int j=sm;j>=0;j--){
			if(dp[j] and j+x<=sm){
				dp[j+x]=true;
				//cout<<"j+x "<<j+x<<endl;
			} 
		}	
	}
	int p=5005,o=0;
	for(int i=sm;i>=0;i--){
		if(dp[i]==true){
			if(p>abs(sm-2*i)){
				p=abs(sm-2*i);
				o=i;
			}
			//cout<<"p "<<p<<endl;
		}
	}
	for(int i=1;i<=n2;i++){
		cin>>x;
		sm2+=x;
		//cout<<sm<<" ";
		for(int j=sm2;j>=0;j--){
			if(dp2[j] and j+x<=sm){
				dp2[j+x]=true;
				//cout<<"j+x "<<j+x<<endl;
			} 
		}	
	}
	int p2=5005,o2=0;
	for(int i=sm2;i>=0;i--){
		if(dp2[i]==true){
			if(p>abs(sm2-2*i)){
				p2=abs(sm2-2*i);
				o2=i;
			}
			//cout<<"p "<<p<<endl;
		}
	}
	for(int i=1;i<=n3;i++){
		cin>>x;
		sm3+=x;
		//cout<<sm<<" ";
		for(int j=sm3;j>=0;j--){
			if(dp3[j] and j+x<=sm3){
				dp3[j+x]=true;
				//cout<<"j+x "<<j+x<<endl;
			} 
		}	
	}
	int p3=5005,o3=0;
	for(int i=sm3;i>=0;i--){
		if(dp3[i]==true){
			if(p3>abs(sm3-2*i)){
				p3=abs(sm3-2*i);
				o3=i;
			}
			//cout<<"p "<<p<<endl;
		}
	}
	for(int i=1;i<=n4;i++){
		cin>>x;
		sm4+=x;
		//cout<<sm<<" ";
		for(int j=sm4;j>=0;j--){
			if(dp4[j] and j+x<=sm4){
				dp4[j+x]=true;
				//cout<<"j+x "<<j+x<<endl;
			} 
		}	
	}
	int p4=5005,o4=0;
	for(int i=sm4;i>=0;i--){
		if(dp4[i]==true){
			if(p4>abs(sm4-2*i)){
				p4=abs(sm4-2*i);
				o4=i;
			}
			//cout<<"p "<<p<<endl;
		}
	}
	cout<<o<<" o "<<o2<<" o2 "<<o3<<" o3 "<<o4<<" o4 "<<(o+o2+o3+o4);	
	return 0;
}

回复

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

正在加载回复...