标签:DP,动态规划,背包

题目描述

新一年度的猫狗大战通过SC(星际争霸)这款经典的游戏来较量,野猫和飞狗这对冤家为此已经准备好久了,为了使战争更有难度和戏剧性,双方约定只能选择Terran(人族)并且只能造机枪兵。

比赛开始了,很快,野猫已经攒足几队机枪兵,试探性的发动进攻;然而,飞狗的机枪兵个数也已经不少了。野猫和飞狗的兵在飞狗的家门口相遇了,于是,便有一场腥风血雨和阵阵惨叫声。由于是在飞狗的家门口,飞狗的兵补给会很快,野猫看敌不过,决定撤退。这时飞狗的兵力也不足够多,所以没追出来。

由于不允许造医生,机枪兵没办法补血。受伤的兵只好忍了。555-

现在,野猫又攒足了足够的兵力,决定发起第二次进攻。为了使这次进攻给狗狗造成更大的打击,野猫决定把现有的兵分成两部分,从两路进攻。由于有些兵在第一次战斗中受伤了,为了使两部分的兵实力平均些,分的规则是这样的:1)两部分兵的个数最多只能差一个;2)每部分兵的血值总和必须要尽可能接近。现在请你编写一个程序,给定野猫现在有的兵的个数以及每个兵的血格值,求出野猫按上述规则分成两部分后每部分兵的血值总和。

输入输出格式

输入格式:

第一行为一个整数n(1<=n<=200),表示野猫现在有的机枪兵的个数。以下的n行每行一个整数,表示每个机枪兵的血格(1<=ai<=40)。

输出格式:

一行,为两个整数,表示分成两部分后每部分兵的血值总和

输入输出样例

输入样例#1:

3

35

20

32

输出样例#1:

35 52

题意:

给定:正整数序列a1……an

求:将这些数分为两部分,个数差值<=1,每部分和差值最小

W1 二进制模拟   n<=20

W2  动态规划:f[i][j][k]表示选了前i个人中j个兵是否可以构成血量为k,之后就转化为一个背包问题的变形,优化一维f[i][j]表示选i个兵能否构成j的血量

状态转移方程 f[i][j]=f[i][j]|f[i-1][j-a[i]]

最后统计答案是从sum(所有的人血量和)除以2开始枚举,发现的第一个满足的方案时就输出解。

Code

#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<=b;i++)
#define dep(i,a,b) for(int i=a;i>=b;i--)
#define LL long long
#define mem(x,num) memset(x,num,sizeof x)
using namespace std;
const int maxn=206,maxsum=8006;
int n,sum=0,a[maxn],f[maxn][maxsum];int main()
{scanf("%d",&n);f[0][0]=1;rep(i,1,n)scanf("%d",&a[i]),sum+=a[i];rep(i,1,n)dep(j,n/2,1)dep(k,sum,a[i])f[j][k]|=f[j-1][k-a[i]];dep(i,sum/2,0)if(f[n/2][i]){printf("%d %d\n",i,sum-i);return 0;}
}

洛谷1489 猫狗大战相关推荐

  1. 洛谷P1489 猫狗大战

    题目描述 新一年度的猫狗大战通过SC(星际争霸)这款经典的游戏来较量,野猫和飞狗这对冤家为此已经准备好久了,为了使战争更有难度和戏剧性,双方约定只能选择Terran(人族)并且只能造机枪兵. 比赛开始 ...

  2. 洛谷 P7960 [NOIP2021] 报数

    PS:如果读过题了可以跳过题目描述直接到题解部分 提交链接:洛谷 P7960 [NOIP2021] 报数 题目 题目描述 报数游戏是一个广为流传的休闲小游戏.参加游戏的每个人要按一定顺序轮流报数,但如 ...

  3. 洛谷-题解 P2672 【推销员】

    独门思路!链表加优先队列! 这题一望,贪心是跑不掉了,但是我贪心并不好,所以想到了一个复杂一些但思路更保稳的做法 思路: 1 因为是离线操作,所以我们可以倒着求,先求x=n的情况,因为那样直接就知道了 ...

  4. 洛谷 P1142 轰炸

    洛谷 P1142 轰炸 题目描述 "我该怎么办?"飞行员klux向你求助. 事实上,klux面对的是一个很简单的问题,但是他实在太菜了. klux要想轰炸某个区域内的一些地方,它们 ...

  5. 洛谷 P1387 最大正方形

    P1387 最大正方形 题目描述 在一个n*m的只包含0和1的矩阵里找出一个不包含0的最大正方形,输出边长. 输入输出格式 输入格式: 输入文件第一行为两个整数n,m(1<=n,m<=10 ...

  6. 洛谷P2763 试题库问题

    题目:https://www.luogu.org/problemnew/show/P2763 题目描述 «问题描述: 假设一个试题库中有n道试题.每道试题都标明了所属类别.同一道题可能有多个类别属性. ...

  7. 动态规划——洛谷_P1057传球游戏

    题目: 题目描述 上体育课的时候,小蛮的老师经常带着同学们一起做游戏.这次,老师带着同学们一起做传球游戏.游戏规则是这样的:n个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球, ...

  8. 洛谷P1417 烹调方案

    洛谷P1417 烹调方案 如果是一般的01背包的话 选的先后是没关系的 但是这题选的先后是有关系的,因为他的价值是随着时间而变化的, 而你的01背包是做不到先选2再选1的 那么我们就跟国王游戏一样 用 ...

  9. 记忆优化搜索(简单题)(洛谷P3183 [HAOI2016]食物链 )( P5635 【CSGRound1】天下第一 )

    昨天做了蓝桥杯的时候,发现自己对于记忆优化搜索甚是不熟悉,所以今天随便找了几个基础题做做,顺便写下两片题解,顺便用了一下devc++敲的代码,发现没有代码补全真的可以说是灰常难受了... 洛谷P318 ...

  10. 洛谷 - 试炼场(全部题目备份)

    整理的算法模板合集: ACM模板 目录 1.新手村 1 - 1 洛谷的第一个任务 1 - 2 顺序与分支 1 - 3 循环!循环!循环! 1 - 4 数组 1 - 5 简单字符串 1 - 6 过程函数 ...

最新文章

  1. 前端学习 -- Css -- 伪元素
  2. Django DTL模板语法中的循环
  3. 利用Eclipse/MyEclipse 实体类生成.hbm.xml文件
  4. tf_geometric的安装
  5. wxWidgets:拖动一个 wxWindow
  6. 【EasyNetQ】- 使用Future Publish调度事件
  7. 最全JavaScript基础总结~建议收藏
  8. 在 .NET 中设置页面元素的 javascript 事件 - IEBrowser [5]
  9. bzoj2588: Spoj 10628. Count on a tree 主席树
  10. win10安装mvn,安装ojdbc7.jar
  11. 终于等到离职这一天了--献给准备、犹豫离职中的朋友们!
  12. 延时消息推送的正确姿势你get到了吗?
  13. 机器学习 Python scikit-learn 中文文档(10)Scikit-Learn 处理文本数据
  14. java左手画圆右手画方_左手画圆右手画方900字作文
  15. 华为ENSP之MPLS初级应用
  16. 麦当劳,肯德基等店排班时根据营业额预估需要人手的软件,原理是什么?
  17. ELK环境搭建+入门使用
  18. webp怎么转换成png,4个方法教你快速处理
  19. Unity 与 微信小程序(游戏)交互
  20. 【安全硬件】Chap.2 如何破译一个CMOS门级电路;传播延迟、动态功耗、静态功耗可能泄露电路的构造以及输入密钥;非侵入式攻击 Non-Invasive Attacks

热门文章

  1. 【规律】Cunning Friends
  2. 剖析kubernetes集群内部DNS解析原理
  3. 关于 Jupyter Notebook 中 No module named ‘torch‘ 的解决办法
  4. 睡眠手环APP开发优势特点
  5. R 语言的表格合并(实际运用)
  6. python识别条形码_用 Python 和 OpenCV 检测图片上的条形码
  7. SQL 注入速查表大全
  8. 网吧lol正在连接服务器,网吧steam在连接至steam服务器时遇到问题的处理办法
  9. 中药知多少!!!!!
  10. Word页码从当前页自增