UVA-562 Dividing coins---01背包+平分钱币
2024-10-03 23:22:41
题目链接:
https://vjudge.net/problem/UVA-562
题目大意:
给定n个硬币,要求将这些硬币平分以使两个人获得的钱尽量多,求两个人分到的钱最小差值
思路:
它所给出的n个钱币加起来sum,将sum/2当作体积,求出在sum/2下的最大值,sum-2*dp[sum/2]
#include<bits/stdc++.h>
using namespace std;
const int maxn = ;
const int maxm = 1e5+;
int a[maxn];
int dp[maxm];
int T, n, m;
int main()
{
cin >> T;
while(T--)
{
cin >> n;
int sum = ;
memset(dp, , sizeof(dp));
for(int i = ; i < n; i++)cin >> a[i], sum += a[i];
for(int i = ; i < n; i++)
{
for(int j = sum / ; j >= a[i]; j--)
dp[j] = max(dp[j], dp[j - a[i]] + a[i]);
}
cout<<(sum - * dp[sum / ])<<endl;
}
return ;
}
最新文章
- 坑爹的微信支付v3,其实没有那么坑
- oracle 递归应用(挺复杂的)
- Sass的基本运算(转载)
- CSS实现特殊效果
- JS中的constructor与prototype
- 查看perl及其模块
- 关于json的理解
- dede:arclist 如何调用文章正文?
- guestmount
- Android,监控ContentProvider的数据改变
- JAVA CAS单点登录(SSO)
- 1分钟选好最合适你的JavaScript框架
- C语言之成绩转换
- Python IDLE配置清屏快捷键(Ctrl+L)
- oracle drop 表后 恢复
- 解决jenkins git timeout的问题
- Delete 和 Put 请求失效, Spring 框架
- NET Core微服务之路:简单谈谈对ELK,Splunk,Exceptionless统一日志收集中心的心得体会
- 【SQL】SQL Between用法
- 微信小程序开发——全局配置详细介绍