hdu5616
来源:互联网 发布:2017信用卡淘宝套现 编辑:程序博客网 时间:2024/06/06 01:53
#include<cstdio>#include<cstring>const int maxm=2001;const int mid=2005;int a[21];int dp[maxm+10];int main(){ int T; scanf("%d",&T); while(T--){ int n; scanf("%d",&n); for(int i=1;i<=n;i++)scanf("%d",&a[i]); memset(dp,0,sizeof(dp)); dp[0]=1;/**// for(int i=1;i<=n;i++){// for(int j=a[i];j<=MAX;j++)dp[j]|=dp[j-a[i]];///a[i] j j-a[i]// 这里是因为理解有问题把我 如果j-a[i]可以 那么j就是可以得到的// for(int j=a[i];j>=0;j--)dp[j]|=dp[a[i]+j];// 如果j+a[i]可以 那么j就是可以得到的// }// 但是我这里犯了错误 就是遍历的顺序弄错了 第一个应该是MAX到a[i]// 如果像我一样的遍历顺序 也就是说同样的a[i]重量 我使用了多次 与题意不符合// ` 这里的砝码 是用且仅用一次的 */ //positive for(int i = 1; i <= n; i++){ for(int j = maxm - 1; j >= a[i]; j--){ dp[j] |= dp[j - a[i]]; } } /**// for(int k=0;k<maxm;k++){// if(dp[k]){// printf("%d ",k);// }// }// printf("\n"); */ //negtive for(int i = 1; i <=n; i++) { for(int j = 0; j < maxm - a[i]; j++) { dp[j] |= dp[j+a[i]]; } }// for(int i=0;i<maxm;i++){// if(dp[i]){// printf("%d ",i);// }// } int m; scanf("%d",&m); while(m--){ int t; scanf("%d",&t); printf((t<=maxm&&(dp[t]))?"YES\n":"NO\n"); } } return 0;}
1 0
- hdu5616
- HDU5616(水题)
- hdu5616 Jam's balance
- HDU5616 Jam's balance
- hdu5616 Jam's math problem
- HDU5616 背包 天平平衡问题
- HDU5616 Jam's balance 动态规划
- 母函数解决 Jam's balance hdu5616
- HDU5616 Jam's balance[背包dp变形]
- hdu5616(理解01背包很好的题目)
- android键盘监听方案
- 自定义控件之------仿ios下拉回弹效果
- 安装apache-tomcat-6.0.36
- Android开发之BUG专讲:入门篇(二)
- 分享一个自己写的QT小游戏-玛丽奥医生
- hdu5616
- jquery的淡入淡出效果
- 关于微信 init接口返回的Count和webwxbatchgetcontact post请求的参数Count
- SIP:100rel 扩展
- Spring 整合Hibernate
- iOS 按键 抖动
- PostgreSQL-函数
- Ogre3D嵌入Qt框架 之 小结
- iOS使用网易云信在线视频聊天