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

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

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

格式

输入格式

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

输出格式

只有一行,包含两个数,即野猫的每部分兵的血值总和,较小的一个值放在前面,两个数用空格分隔。

样例1

样例输入1

3
35
20
32
Copy

样例输出1

35 52
Copy

限制

各个测试点1s

提示

TO 狗狗:这道题的数据范围我已经尽量按星际的游戏规则来了,如果你再固执于由于机枪兵的攻击力一定使不能达到某些血格值或者游戏中一定要造农民不能使机枪兵的人数达到200的话,我只能决定将那场猫狗大战的录像公开于世人了!!!

首先DP很好想,f[i][j]表示用i个数何为j的可能性,以为每个数只能用一次,所以就要用类似于01背包般的做法来做,从后往前枚举。

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<cstdlib>
#include<vector>
using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair<int,int> pr;
const double pi=acos(-1);
#define rep(i,a,n) for(int i=a;i<=n;i++)
#define per(i,n,a) for(int i=n;i>=a;i--)
#define Rep(i,u) for(int i=head[u];i;i=Next[i])
#define clr(a) memset(a,0,sizeof(a))
#define pb push_back
#define mp make_pair
#define fi first
#define sc second
#define pq priority_queue
#define pqb priority_queue <int, vector<int>, less<int> >
#define pqs priority_queue <int, vector<int>, greater<int> >
#define vec vector
ld eps=1e-9;
ll pp=1000000007;
ll mo(ll a,ll pp){if(a>=0 && a<pp)return a;a%=pp;if(a<0)a+=pp;return a;}
ll powmod(ll a,ll b,ll pp){ll ans=1;for(;b;b>>=1,a=mo(a*a,pp))if(b&1)ans=mo(ans*a,pp);return ans;}
void fre() { freopen("c://test//input.in", "r", stdin); freopen("c://test//output.out", "w", stdout); }
//void add(int x,int y,int z){ v[++e]=y; next[e]=head[x]; head[x]=e; cost[e]=z; }
int dx[5]={0,-1,1,0,0},dy[5]={0,0,0,-1,1};
ll read(){ ll ans=0; char last=' ',ch=getchar();
while(ch<'0' || ch>'9')last=ch,ch=getchar();
while(ch>='0' && ch<='9')ans=ans*10+ch-'0',ch=getchar();
if(last=='-')ans=-ans; return ans;
}
#define N 205
#define M 8005
int a[N],f[N][M];
int main()
{int n=read(),sum=0;for(int i=1;i<=n;i++)a[i]=read(),sum+=a[i];int n2=n>>1;f[0][0]=1;for(int i=1;i<=n;i++)for(int j=n2;j>=0;j--)for(int k=sum-a[i];k>=0;k--){f[j+1][k+a[i]]|=f[j][k];}int ans=0;        for(int i=sum;i>=0;i--){if(f[n2][i]){ans=max(ans,min(i,sum-i));}}    cout<<ans<<' '<<sum-ans<<endl;return 0;
}

转载于:https://www.cnblogs.com/dancer16/p/7265034.html

vijos1153猫狗大战相关推荐

  1. vijos1153 猫狗大战

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

  2. dp训练第27题 vijos1153 猫狗大战 背包

    给定一个整数n(200)和n个数(40). 要求将这些数分组,使得个数最多差1且数字和最接近. 做法很多,这里列举一种 题意要求从n个数中选择n/2个,并使得和与总和的一半最为接近. 状态表示:可以用 ...

  3. vijos1153:猫狗大战

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

  4. 深度学习之基于AlexNet实现猫狗大战

    这次实验的主角并不是猫狗大战,而是AlexNet网络,只不过数据集为猫狗大战数据集.本次实验利用自己搭建的AlexNet网络实现猫狗大战,测试一下AlexNet网络的性能. AlexNet网络作为Le ...

  5. 基于tensorflow2.0实现猫狗大战(搭建网络迁移学习)

    猫狗大战是kaggle平台上的一个比赛,用于实现猫和狗的二分类问题.最近在学卷积神经网络,所以自己动手搭建了几层网络进行训练,然后利用迁移学习把别人训练好的模型直接应用于猫狗分类这个数据集,比较一下实 ...

  6. 使用猫狗大战数据集进行一次完整的TensorFlow训练

    1.简介 一直想将图片制作成tfrecords文件,然后在模型中运行一下.最初想用的数据集是mnist,但是跑的过程中一直出现问题.找到这一篇知乎上的博客,写的非常不错. 原博客地址:https:// ...

  7. 第四次作业:猫狗大战挑战赛

    文章目录 1. 导入需要的包,检查使用设备 2. 导入数据集并修改数据集目录结构 3. 数据处理 4. 创建VGG Model 5. 修改最后一层,冻结前面层的参数 6. 训练并测试全连接层 7.可视 ...

  8. python猫狗大战pytorch_深度学习实战---猫狗大战(pytorch实现)

    数据准备 猫狗大战数据集下载链接 微软的数据集已经分好类,直接使用就行, 数据划分 我们将猫和狗的图片分别移动到训练集和验证集中,其中90%的数据作为训练集,10%的图片作为验证集,使用shutil. ...

  9. 猫狗大战——基于TensorFlow的猫狗识别(2)

    微信公众号:龙跃十二 我是小玉,一个平平无奇的小天才! 上篇文章我们说了关于猫狗大战这个项目的一些准备工作,接下来,我们看看具体的代码详解. 猫狗大战--基于TensorFlow的猫狗识别(1) 文件 ...

最新文章

  1. cad lisp 背景遮罩_给文字批量添加边界偏移因子为1.1(或其他值)的背景遮罩的源程序(有详细注解)...
  2. 未来十年,中间商不会死,但是经销商可能会无店可供!
  3. Java中JDBC进阶教程之数据库的隔离级别!
  4. Meteor环境安装配置
  5. MATLAB生成FPGA COE文件之XILINX FPGA滤波器系数
  6. 工程化,模块化,组件化,规范化
  7. (二)利用Java WebService调用天气预报实践
  8. php连接mysql乱码原因_PHP连接MYSQL出现乱码的原因与解决办法
  9. thinkPHP仿QQ飞车手游模拟抽奖源码
  10. python 折线图 尾部_Matplotlib 折线图plot()所有用法详解
  11. C语言指针实数组输入输出,C语言:回来两个数组中第一个元素的指针,并输出这个值...
  12. 网络控制系统分析与设计——时延问题的网络控制系统建模
  13. spring整合kaptcha验证码
  14. 1500个javascript特效
  15. 英伟达账号为什么登录不了_n卡的geforce experience登录不了怎么办?
  16. java设置cpu亲和性_cpu亲和性绑定
  17. 如何使用云桌面进行开发?
  18. sencha app watch php,使用新的SenchaCmd4命令appwatch
  19. [Django项目案例]搭建用户与商品后台管理系统
  20. 近地天体撞击地球原理的设想

热门文章

  1. css控制 区域 圆角 显示
  2. 关于VBA中【按钮的改名】 和 【函数名字的改变】
  3. java什么会引用传递_在java中为什么很多人说有值传递和引用传递?引用传递的本质...
  4. 异常来自 HRESULT:0x800A01A8
  5. 多线程解决同步问题浅析
  6. A. 解决运行php文件出现乱码的问题
  7. Ubuntu14.04安装build-essential失败,包依赖问题如何解决?
  8. ubuntu系统下IDEA中新建class时报错Unable to parse template “Class“的解决方法
  9. 解决Ubuntu系统“无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系”的有效方法
  10. 关于解决“用系统U盘安装win7却提示‘缺少所需的CD/DVD驱动器设备驱动程序’”的问题