poj 2923 状态压缩dp
来源:互联网 发布:cms 开源 编辑:程序博客网 时间:2024/06/16 09:05
#include<cstdio>#include<cstring>#define MAX(x,y) ((x)>(y)?(x):(y))#define MIN(x,y) ((x)>(y)?(y):(x))#define INF 0x3f3f3f3fint dp[1025];int vis[1025],w[105],d[1025];int n,c1,c2;int judge(int x){int sum=0;memset(vis,0,sizeof(vis));vis[0]=1; for(int k=0;k<n;k++){if((1<<k)&x){sum+=w[k];if(sum>c1+c2)return 0;for(int j=c1;j>=w[k];j--)if(vis[j-w[k]])vis[j]=1; }}for(int i=c1;i>=0;i--)if(vis[i]&&sum-i<=c2)return 1;return 0;}int main(){int T,tot,t=1;scanf("%d",&T);while(T--){dp[0]=0; scanf("%d%d%d",&n,&c1,&c2);for(int i=0;i<n;i++)scanf("%d",&w[i]);tot=0;for(int i=0;i<(1<<n);i++)if(judge(i))d[tot++]=i;memset(dp,0x3f,sizeof(dp));dp[0]=0; for(int i=0;i<tot;i++){for(int j=((1<<n)-1);j>=0;j--)if(dp[j]!=INF){if(j&d[i])continue;dp[d[i]|j]=MIN(dp[j]+1,dp[d[i]|j]);}} printf("Scenario #%d:\n%d\n\n",t++,dp[(1<<n)-1]);}}
0 0
- POJ 2923(dp + 状态压缩)
- poj 2923 状态压缩dp
- POJ 2923 Relocation / 状态压缩DP
- 状态压缩DP——POJ 2923
- POJ 2923-Relocation-状态压缩+DP
- 【状态压缩DP】POJ 1170
- 【状态压缩DP】POJ 1185
- POJ 3254 状态压缩DP
- poj 3254 状态压缩dp
- poj 3254 状态压缩DP
- poj 1185(状态压缩dp)
- poj 3254(状态压缩dp)
- poj 3311(状态压缩dp)
- poj-2411-状态压缩DP
- POJ 3254 状态压缩DP
- Poj 2404 状态压缩DP
- poj 2411 状态压缩dp
- poj 2411 状态压缩DP
- 禁止 UITextField 的粘贴、复制
- mysql数据库备份与还原
- JSON Web Token-在Web应用间安全地传递信息
- [机器学习]Python中Numpy,Pandas,Matplotlib,Scipy,Seaborn介绍
- Java面试准备十七:数据库——练习
- poj 2923 状态压缩dp
- SDNU 1043.采药2 完全背包
- Fedora25快速安装LNMP环境
- Java编程题
- 设计模式之反射与配置文件
- 报表导出1
- sharding-jdbc源码阅读之soft transaction
- 完全激活win server 2012的方法(亲测可行!)
- CodeForces 620 D.Professor GukiZ and Two Arrays(枚举+set)