UVA - 562 Dividing coins
来源:互联网 发布:用java打印空心菱形 编辑:程序博客网 时间:2024/03/29 16:01
这道题初看不是dp ,但感觉十分像dp,如果直接去做的话,好像既没有最优子结构也没有重叠子问题。但是注意到最终的目的是尽量平分,就可以想办法转化:约数条件是一个人的总价值不超过总共的一半,目的是在此基础上尽量提高总价值。。相当于01背包里的体积和价值在这里都是价值。。。
不过对于01背包我还是觉得很模糊,仍然觉得这个解决过程对我来说有点抽象。。还是要尽量把道理想通啊。。。
#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#define MAX 110using namespace std;int dp[MAX][MAX*500],s[MAX];int main(){ int t,n,i,j,all,big; s[0]=0; scanf("%d",&t); while(t--) { scanf("%d",&n); all=0,big=-1; memset(dp,0,MAX*MAX*500*4); for(i=1;i<=n;i++) { scanf("%d",&s[i]); all+=s[i]; } for(i=1;i<=n;i++) { for(j=0;j<=all/2;j++) { if(j>=s[i]) { dp[i][j]=max(dp[i-1][j-s[i]]+s[i],dp[i-1][j]); } else dp[i][j]=dp[i-1][j]; } } /*for(i=all/2;i>=0;i--) { for(j=1;j<=n;j++) if(dp[j][i]>big) big=dp[j][i]; }*/ printf("%d\n",(all-2*dp[n][all/2])); } return 0;}
0 0
- uva 562 Dividing coins
- uva:562 - Dividing coins
- UVA 562 Dividing coins
- Uva 562 Dividing coins
- UVa 562 - Dividing coins
- UVA 562 Dividing coins
- uva 562 Dividing Coins
- UVa 562 - Dividing coins
- UVa 562 - Dividing coins
- uva 562 - Dividing coins
- uva 562 Dividing coins
- UVa 562 - Dividing coins
- UVa 562 Dividing Coins
- Uva-562- Dividing coins
- UVA 562 Dividing coins
- UVa 562: Dividing Coins
- UVA - 562 Dividing coins
- uva 562 Dividing coins
- ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
- FPGA之map小常识
- JAVA模拟登录实例
- EM_SETLIMITTEXT(MSDN)
- HTTP协议是无状态协议,怎么理解?
- UVA - 562 Dividing coins
- 在Mac上安装MySql5.6
- HTTP协议详解
- servlet获取表单提交的数据、请求转发、请求包含、请求重定向
- 拼接字符串
- linux网卡驱动源码分析(二)
- va-start va_arg va_end
- Android实现监听手机通话--仅供学习使用--
- Hadoop源码解析之: TextInputFormat如何处理跨split的行