【BZOJ】【P2073】【POI2004】【PRZ】【题解】【状压DP+枚举子集】

来源:互联网 发布:win7系统更新失败知乎 编辑:程序博客网 时间:2024/05/23 01:10

传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=2073

状压DP+枚举子集

Code:

#include<bits/stdc++.h>using namespace std;int n,W;int w[18],t[18];int dp[1<<16],sum[1<<16],tim[1<<16];int main(){cin>>W>>n;for(int i=1;i<=n;i++)cin>>t[i]>>w[i];for(int i=1;i<(1<<n);i++){for(int j=1;j<=n;j++){if(i>>(j-1)&1){sum[i]+=w[j];tim[i]=max(tim[i],t[j]);}}}for(int i=1;i<(1<<n);i++){dp[i]=2333333;for(int j=i;j;j=i&(j-1))if(sum[j]<=W)dp[i]=min(dp[i],tim[j]+dp[i^j]);}cout<<dp[(1<<n)-1]<<endl;return 0;}


0 0