题目:P2392 kkksc03考前临时抱佛脚 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
#include<bits/stdc++.h>
using namespace std;
int a[5],b[21],sum=0,t=0;
int dp[2500];
signed main(){
std::ios::sync_with_stdio(false);
std::cin.tie(NULL);
for(int i=1;i<=4;i++) cin>>a[i];
for(int i=1;i<=4;i++){
sum=0;
for(int j=1;j<=a[i];j++){
cin>>b[j];
sum+=b[j];
}
for(int j=1;j<=a[i];j++)
for(int k=sum/2;k>=b[j];k--)
dp[k]=max(dp[k],dp[k-b[j]]+b[j]);
t+=sum-dp[sum/2];
for(int j=1;j<=sum/2;j++)
dp[j]=0;
}
cout<<t<<endl;
return 0;
}
从这道题学会的:
- 01背包问题的具体应用和理解