NYOJ 325 zb的生日
来源:互联网 发布:用js的网站打开很慢吗 编辑:程序博客网 时间:2024/05/16 12:06
开始想到的01背包,然后就超时了
#include<stdio.h>#include<math.h>#include<iostream>#include<algorithm>#include<string.h>using namespace std;int main(){ int n,sum,total; int p[25],dp[100000]; while(~scanf("%d",&n)) { sum=0; for(int i=1;i<=n;i++) { scanf("%d",&p[i]); sum+=p[i]; } total=sum; sum/=2; for(int i=1;i<=n;i++) { for(int j=sum;j>=p[i];j--) { dp[j]=max(dp[j],dp[j-p[i]]+p[i]); } } printf("%d\n",abs(total-2*dp[sum])); } return 0;}
网上看到的深搜方法,写的很好,我还写不出来,跟之前遇到的部分和问题很像。。部分和问题链接
附代码及借鉴链接
#include<stdio.h>#include<math.h>#include<iostream>#include<string.h>using namespace std;int w[25],total,n;int m;void dfs(int cur,int sum){ if(cur==n+1) return; int t; t=(int)(fabs(total-2*sum)); if(t<m) m=t; dfs(cur+1,sum+w[cur]); dfs(cur+1,sum);}int main(){ int i; while(scanf("%d",&n)!=EOF) { total=0; m=20001; for(i=1;i<=n;++i) { scanf("%d",&w[i]); total=total+w[i]; } dfs(1,0); printf("%d\n",m); }}
之前遇到的一个HDU上的多校题目,要求保证整个分配过程中两者差值的最大值最小,,大概也是深搜吧,,但是现在还不会写。。暂时找不到链接了。。
0 0
- NYOJ 325 zb的生日
- NYOJ 325 zb的生日
- NYOJ 325zb的生日
- nyoj 325-zb的生日
- NYOJ 325 zb的生日
- NYOJ 325 zb的生日
- NYOJ-325-zb的生日
- NYOJ 325 zb的生日
- nyoj 325 【zb的生日】
- NYOJ 325 zb的生日
- NYOJ 325 ZB的生日
- NYOJ-325 zb的生日
- nyoj-325 zb的生日
- nyoj-325-zb的生日
- NYOJ 325 zb的生日
- nyoj--325--zb的生日
- nyoj zb的生日--325
- NYOJ 325 zb的生日
- javaScript中的函数
- spring mvc web.xml dispatcher-servlet.xml配置
- MYSQL安装图解
- 如何将BMP文件转化成16进制文件
- UVA 11354 Bond(MST+倍增)
- NYOJ 325 zb的生日
- 技巧114 使用字典中的单词进行自动补全
- sublime3 Ctrl + B 只build 不运行的解决方案之一
- 技巧115 自动补全整行文本
- 内存溢出之Tomcat内存配置
- Java Collection ArrayList
- 验证码的生成【JAVAweb】
- bmp转十六进制hex样例
- 技巧116 自动文件名补全