Vijos P1153 - 猫狗大战
来源:互联网 发布:bootbox.js 中文 编辑:程序博客网 时间:2024/04/29 10:31
题意
把给定的数分成两部分,最多只能相差1个,使得他们的差最小。
思路
记得在UVa上有一题,分成两部分使得差最小,那直接对sum的一半进行背包即可,这题算是那题的升级版吧。
用dp[i][j][k]表示前i个选j个能否到达k,数据太大,滚一下。
又看到一种思路,先把输入分两部分存起来,然后用一个二重for,如果能够使相差减少就交换。
代码
#include <bits/stdc++.h>using namespace std;#define LL long long#define MP(a, b) make_pair(a, b)const int MAXN = 200 + 10;const int INF = 0x3f3f3f3f;int w[MAXN];bool dp[MAXN][MAXN * 40 + 10];int main(){ //freopen("input.txt", "r", stdin); int n, i, j, sum = 0; scanf("%d", &n); for (i = 1; i <= n; i++) { scanf("%d", &w[i]); sum += w[i]; } dp[0][0] = 1; for (i = 1; i <= n; i++) for (j = n; j >= 1; j--) for (int k = sum; k >= w[i]; k--) dp[j][k] |= dp[j - 1][k - w[i]]; int t = sum >> 1; n >>= 1; for (i = t; i >= 0; i--) if (dp[n][i]) { printf("%d %d\n", i, sum - i); return 0; } return 0;}
#include <bits/stdc++.h>
using namespace std;
#define LL long long
#define MP(a, b) make_pair(a, b)
const int MAXN = 200 + 10;
const int INF = 0x3f3f3f3f;
int w[MAXN], d[MAXN];
int main()
{
//freopen("input.txt", "r", stdin);
int n, i, j, asum = 0, bsum = 0, minmin = INF;
scanf("%d", &n);
for (i = 1; i <= n / 2; i++)
{
scanf("%d", &w[i]);
asum += w[i];
}
int t = n - n / 2;
for (i = 1; i <= t; i++)
{
scanf("%d", &d[i]);
bsum += d[i];
}
minmin = abs(asum - bsum);
for (i = 1; i <= n / 2; i++)
for (j = 1; j <= t; j++)
if (abs(bsum - asum + 2 * (w[i] - d[j])) < minmin)
{
asum += d[j] - w[i];
bsum += w[i] - d[j];
minmin = abs(asum - bsum);
swap(w[i], d[j]);
}
printf("%d %d\n", min(asum, bsum), max(asum, bsum));
return 0;
}
0 0
- Vijos P1153 - 猫狗大战
- Vijos P1153 猫狗大战
- VIJOS P1153 猫狗大战
- VIJOS-P1153 猫狗大战 dp 贪心
- Vijos P1153 猫狗大战(动态规划,背包)
- vijos 猫狗大战
- dp遍历所有状态 vijos 1037 搭建双塔 1059 积木城堡 1153 猫狗大战
- Vijos P1228 拯救世界-星际大战
- Vijos P1228 拯救世界-星际大战
- 猫狗大战
- 洛谷 P1489 猫狗大战
- 洛谷1489 猫狗大战
- 猫狗大战遇到问题
- 【vijos】【二分图带权匹配】拯救世界-星际大战
- [keras]猫狗大战的总结
- Tensorflow学习——猫狗大战
- 360大战搜狗
- 人狗大战
- javaweb条形码产生、打印、扫描
- HDOJ 4968 Improving the GPA
- android 利用mediaplayer播放录音停止后出现mediaplayer went away with unhandled event
- 【BB-Black的诱惑】序列之6:远程看看狗板的桌面
- Monthly Expense
- Vijos P1153 - 猫狗大战
- 微信公众账号跳转外部链接
- 中兴软件面试题2
- linux系统调用表
- C#中关闭第一个Form窗口,打开另一个新窗口方法
- 分布式缓存Memcached详解
- CentOS源码安装apache和php
- 【线段树】 HDOJ 4967 Handling the Past
- 指令流水线的计算