TOJ3583A and B Problem
来源:互联网 发布:永久性脱胡须知乎 编辑:程序博客网 时间:2024/06/05 05:05
A and B Problem
Time Limit(Common/Java):1000MS/3000MS Memory Limit:65536KByte
Total Submit: 25 Accepted: 16
Total Submit: 25 Accepted: 16
Description
相信你已经AC了A + B Problem,是不是很简单呢。
下面继续A and B Problem这个简单的问题,将若干个长度不同的木棍,分成A堆和B堆,并且保证A堆所有木棍的长度之和等于B堆所有木棍的长度之和。
Input
输入数据有多组。
每组测试数据第一行为一个正整数n(n<=100),代表总的木棍个数;
第二行为n个以空格隔开的正整数ci(ci<=100)。
Output
如果n根木棍可以分成两堆木棍(A堆和B堆),并且A堆所有木棍的长度之和等于B堆所有木棍的长度之和,则输出"Yes" ,否则输出"No"(A堆和B堆中的木棍个数不必相等)。
Sample Input
41 2 3 421 2
Sample Output
YesNo
#include <iostream>#include <cstdio>#include <cstring>#include <vector>#include <algorithm>using namespace std;const int maxn = 110;bool vis[maxn];vector<int> v;int n, sum;bool result;bool cmp(const int& x, const int& y) { return x < y;}void dp(int s) { if(result) return; if(s == 0) { result = true; return; } int i, Size = v.size(); for(i = Size-1; i >= 0; i--) { if(!vis[i] && s >= v[i]) { vis[i] = true; dp(s-v[i]);//状态转移. vis[i] = false; } }}void init() { sum = 0; v.clear(); result = false; memset(vis, false, sizeof(vis));}int main(){ int i; int tmp; while(scanf("%d", &n) != EOF) { init(); for(i = 1; i <= n; i++) { scanf("%d", &tmp); sum += tmp; v.push_back(tmp); } sort(v.begin(), v.end(), cmp); if(sum % 2 == 1) { printf("No\n"); continue; } dp(sum/2); if(result) printf("Yes\n"); else printf("No\n"); } return 0;}
- TOJ3583A and B Problem
- HDUOJAlexandra and A*B Problem
- hdu 3819 A and B problem
- hdu_3819 A and B Problem (字符串)
- Codeforces 442B Andrey and Problem(贪心)
- HDU 5109 Alexandra and A*B Problem
- csu Problem B: String and Arrays
- hdu 5109 Alexandra and A*B Problem
- HDU-3819-A and B Problem
- HDU 3819 A and B Problem
- hdu 5109 Alexandra and A*B Problem
- Problem B. Black and White Gym-100801B] 想象力
- HDU 3819 A and B Problem 对字符串进行处理
- CF:Problem 426B - Sereja and Mirroring 二分或者分治
- Codeforces Round #253 (Div. 1) B. Andrey and Problem
- 【BestCoder】 HDOJ 5109 Alexandra and A*B Problem
- HDU5109 Alexandra and A*B Problem(数学题)
- Hdu 5109 Alexandra and A*B Problem(枚举)
- 关于差值存储
- Java中的代理模式----静态代理和动态代理
- [进程通信] 进程间通信 之 管道
- java多线程问题
- vector的内存管理
- TOJ3583A and B Problem
- 程序员是世界上最聪明的人
- java模式之单例模式
- :lucene 入门(转)
- Hibernate的二级缓存
- win7 64下安装gocode
- [进程通信] 消息队列
- Android摇一摇软件功能解析(java版)
- iOS应用性能调优的25个建议和技巧