HDU 3182【状压DP--easy】
来源:互联网 发布:java源代码分享 编辑:程序博客网 时间:2024/05/16 11:58
挺简单的。。然而还是想了一会。。。感觉自己脑袋还不是很清醒。。TAT。。。自己脑袋里老是有些奇奇怪怪的小细节。。TAT
#include <stdio.h>#include <iostream>#include <string.h>using namespace std;#define maxn 40000class node{public: int cost,sum;}dp[maxn];class nodee{public: int v,e,need;}a[16];int bina[16],n,total;int vis[maxn];void init(){ for(int i=0;i<16;i++) bina[i]=1<<i;}int max(int x,int y){return x>y?x:y;}void work(){ memset(vis,0,sizeof(vis)); int maxnum=1<<n; dp[0].cost=0,dp[0].sum=0; vis[0]=1; for(int j=0;j<maxnum;j++) { for(int i=0;i<n;i++) { if(!vis[j]) continue; if((j&bina[i])==0) { int now=j|bina[i]; if((j&a[i].need)==a[i].need) { if(vis[now]) { if(a[i].e+dp[j].cost<=total) { if(dp[now].sum<dp[j].sum+a[i].v) dp[now].sum=dp[j].sum+a[i].v; else if(dp[now].sum==dp[j].sum+a[i].v) if(a[i].e+dp[j].cost<dp[now].cost) dp[now].cost=a[i].e+dp[j].cost; } } else if(a[i].e+dp[j].cost<=total) { dp[now].sum=dp[j].sum+a[i].v; dp[now].cost=dp[j].cost+a[i].e; vis[now]=1; } } } } } int ans=0; for(int i=0;i<maxnum;i++) if(vis[i]) ans=max(ans,dp[i].sum); cout<<ans<<endl;}int main(){ int T; cin>>T; init(); while(T--) { cin>>n>>total; for(int i=0;i<n;i++) { cin>>a[i].v; } for(int i=0;i<n;i++) { cin>>a[i].e; } for(int i=0;i<n;i++) { int m,tmp=0,x; cin>>m; for(int j=0;j<m;j++) { cin>>x; tmp+=bina[--x]; } a[i].need=tmp; } work(); } return 0;}
0 0
- HDU 3182【状压DP--easy】
- hdu 4359 Easy Tree DP?
- hdu 4359 Easy Tree DP?
- hdu 4359 Easy Tree DP?
- hdu 4359 Easy Tree DP?
- hdu 4359 easy tree dp? dp+combination
- hdu 2151 Worm(Easy DP)
- Hdu-2770 Easy Climb(DP优化)
- HDU 4359 Easy tree DP? -- 我只能说是个dp
- hdu 4359 Easy Tree DP(dp+组合计数)
- HDU 3182 状压DP
- zoj 1093 || hdu 1069 Monkey and Banana( Easy DP )
- zoj 1733 || hdu 1159 Common Subsequence(Easy , classics DP)
- HDU 4359-Easy Tree DP?-动态规划-递归方法实现
- HDU 4359 Easy Tree DP? 组合数学+动归
- HDU 4359 Easy Tree DP?(是dp但并不是tree dp + 组合计数)
- hdu 3182(状压dp)
- Easy 2048 Again - ZOJ 3802 状压dp
- Java构造器和方法的区别
- 黑马程序员—集合框架(1)
- java语言中解决一些安全问题的技巧(安全编程非常重要标签)
- python 读取文本文件内容转化为python的list
- 基于ATmega64的液晶12864学习心得(一)
- HDU 3182【状压DP--easy】
- C++重载操作符总结
- Python正则表达式指南
- c++ set multiset
- CodeForces 9B - Running Student
- FreeSWITCH - mod_xml_rpc源码分析一socket_win.c
- 1057. Stack (30) - 剑指offer 数据流中的中位数
- 在非Activity类中用Intent实现Activity跳转
- 推荐几个机器学习算法及应用领域相关的中国大牛