社区讨论
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 条回复,欢迎继续交流。
正在加载回复...