QDUOJ 93 - 分辣条(01背包)
2016-08-16 00:26
176 查看
分辣条
发布时间: 2016年6月26日 20:36 最后更新: 2016年6月26日 20:37 时间限制: 1000ms 内存限制: 128M
描述
“你喝的酸奶是我买的,辣条也是我买的,你现在要跟我分手,你把我当什么?”
“因为你每次分辣条的时候都比我多一根!”
可见分好辣条是一件多么重要的事情。。
现在有n(1<=n<=200)根辣条,每根辣条的重量为a1,a2…ai..an(1<=ai<=100)。
那么能不能把这些辣条分为重量相等的两份呢?
输入
输入有多组数据。 每组数据第一行为一个整数n(1<=n<=200),n代表辣条的数量。 第二行有n个整数,a1,a2…ai..an,其中ai(1<=ai<=100)代表第i根辣条的重量
输出
若能分成重量相等的两份,则输出”YES”,否则输出”NO”每个答案占一行
样例输入1 复制
3
1 2 1
4
1 1 1 2
样例输出1
YES
NO
解题思路:
因为数据不大(200*100),所以直接用01背包.
把重量看做成重量和价值.
AC代码
发布时间: 2016年6月26日 20:36 最后更新: 2016年6月26日 20:37 时间限制: 1000ms 内存限制: 128M
描述
“你喝的酸奶是我买的,辣条也是我买的,你现在要跟我分手,你把我当什么?”
“因为你每次分辣条的时候都比我多一根!”
可见分好辣条是一件多么重要的事情。。
现在有n(1<=n<=200)根辣条,每根辣条的重量为a1,a2…ai..an(1<=ai<=100)。
那么能不能把这些辣条分为重量相等的两份呢?
输入
输入有多组数据。 每组数据第一行为一个整数n(1<=n<=200),n代表辣条的数量。 第二行有n个整数,a1,a2…ai..an,其中ai(1<=ai<=100)代表第i根辣条的重量
输出
若能分成重量相等的两份,则输出”YES”,否则输出”NO”每个答案占一行
样例输入1 复制
3
1 2 1
4
1 1 1 2
样例输出1
YES
NO
解题思路:
因为数据不大(200*100),所以直接用01背包.
把重量看做成重量和价值.
AC代码
#include<stdio.h> #include<algorithm> #include<memory.h> using namespace std; int qdu[205]; int dp[20005]; int main() { int n; while(~scanf("%d",&n)) { int sum = 0; for(int i = 0;i < n;i++) { scanf("%d",&qdu[i]); sum += qdu[i]; } if(sum%2) printf("NO\n"); else { memset(dp,0,sizeof(dp)); sum >>= 1; for(int i = 0;i < n;i++) { for(int j = sum;j >= 0;j--) { if(j-qdu[i]>=0) dp[j] = max(dp[j],dp[j-qdu[i]]+qdu[i]); } } if(dp[sum] == sum) printf("YES\n"); else printf("NO\n"); } } return 0; }
相关文章推荐
- ulua 路径小记 以及 lua require 机制整理
- Hdu-4734 F(x)(数位DP)
- Android之自定义view-加载效果
- 枚举库函数搜索:POJ2718--Smallest Difference(解二)
- STL学习总结
- 杭电1003——Max Sum
- "Spark 1.6 + Alluxio 1.2 + OFF_HEAP" 的配置
- 汇编语言
- python 操作消息队列
- C#中的bitmap类和图像像素值获取方法
- 打了断点,但不进入debug视图
- 以前做的一道机试题
- 论文笔记之:Spatially Supervised Recurrent Convolutional Neural Networks for Visual Object Tracking
- 枚举搜索+贪心:POJ2718--Smallest Difference(解一)
- 今天总结
- javascript之获取对象几种方式比较
- Spark On Yarn 详细配置流程
- 如何理解java中的方法
- POJ 3734 Blocks
- NDK支持的C++运行库