The Balance 1709 (母函数 技巧(相加和相减)) 好题
2015-09-20 17:13
316 查看
The Balance
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 6802 Accepted Submission(s): 2796
[align=left]Problem Description[/align]
Now you are asked to measure a dose of medicine with a balance and a number of weights. Certainly it is not always achievable. So you should find out the qualities which cannot be measured from the range [1,S]. S is the total quality
of all the weights.
[align=left]Input[/align]
The input consists of multiple test cases, and each case begins with a single positive integer N (1<=N<=100) on a line by itself indicating the number of weights you have. Followed by N integers Ai (1<=i<=N), indicating the quality
of each weight where 1<=Ai<=100.
[align=left]Output[/align]
For each input set, you should first print a line specifying the number of qualities which cannot be measured. Then print another line which consists all the irrealizable qualities if the number is not zero.
[align=left]Sample Input[/align]
3
1 2 4
3
9 2 1
[align=left]Sample Output[/align]
0
2
4 5 //因为砝码可以放左边也可以放右边,(按左物右码规则),放左盘就取减号,放右盘就取加号,//最终要将指数看作为正数,所以,所有所求得的系数都要取绝对值。
#include<stdio.h> #include<string.h> int a[10010],b[10010],c[110],d[10010]; int main() { int n,i,j,k,sum; while(scanf("%d",&n)!=EOF) { sum=0; for(i=1;i<=n;i++) { scanf("%d",&c[i]); sum+=c[i]; } for(i=0;i<=sum;i++) { a[i]=0; b[i]=0; } for(i=0;i<=c[1];i+=c[1]) a[i]=1; for(i=2;i<=n;i++) { for(j=0;j<=sum;j++) { for(k=0;k+j<=sum&&k<=c[i];k+=c[i]) { if(k>=j) b[k-j]+=a[j]; else b[j-k]+=a[j]; b[j+k]+=a[j]; } } for(j=0;j<=sum;j++) { a[j]=b[j]; b[j]=0; } } int s=0; for(i=0;i<=sum;i++) { if(a[i]==0) { d[s++]=i; } } printf("%d\n",s); if(s) { for(i=0;i<s-1;i++) printf("%d ",d[i]); printf("%d\n",d[s-1]); } } return 0; }
相关文章推荐
- Activity,intent,bundle,请求码,结果码,服务,广播
- VBend、unload、exit sub、 end sub、close、hide的比较
- 《大道至简》第一章读后感
- 学习日志---动态规划(背包问题)
- Codeblocks的编译器配置
- Servlet读取资源文件的三种方式
- 实现顶部轮播,下部listview经典布局的两种方式
- 主分片平衡--Shard Overallocation--es横向扩展设计
- Crisis of HDU(母函数)
- 表驱动法
- 2015 ACM-ICPC 沈阳网络赛总结
- sublime安装与配置
- iOS开发笔记--UISlider的相关属性设置
- docker学习笔记(一)
- Move Zeroes——Leetcode
- tail -f log.txt命令的小技巧------观察日志log.txt的动态变化
- C++虚继承的概念
- PrintWriter输出中文乱码问题
- Java和CDT环境配置
- iOS9适配总结