当前位置: 首页 > news >正文

猫狗大战

新一年度的猫狗大战通过SC(星际争霸)这款经典的游戏来较量,野猫和飞狗这对冤家为此已经准备好久了,为了使战争更有难度和戏剧性,双方约定只能选择Terran(人族)并且只能造机枪兵。
比赛开始了,很快,野猫已经攒足几队机枪兵,试探性的发动进攻;然而,飞狗的机枪兵个数也已经不少了。野猫和飞狗的兵在飞狗的家门口相遇了,于是,便有一场腥风血雨和阵阵惨叫声。由于是在飞狗的家门口,飞狗的兵补给会很快,野猫看敌不过,决定撤退。这时飞狗的兵力也不足够多,所以没追出来。
由于不允许造医生,机枪兵没办法补血。受伤的兵只好忍了。555-
现在,野猫又攒足了足够的兵力,决定发起第二次进攻。为了使这次进攻给狗狗造成更大的打击,野猫决定把现有的兵分成两部分,从两路进攻。由于有些兵在第一次战斗中受伤了,为了使两部分的兵实力平均些,分的规则是这样的:1)两部分兵的个数最多只能差一个;2)每部分兵的血值总和必须要尽可能接近。现在请你编写一个程序,给定野猫现在有的兵的个数以及每个兵的血格值,求出野猫按上述规则分成两部分后每部分兵的血值总和。
输入输出格式
输入格式:
第一行为一个整数n(1<=n<=200),表示野猫现在有的机枪兵的个数。以下的n行每行一个整数,表示每个机枪兵的血格(1<=ai<=40)。
输出格式:
一行,为两个整数,表示分成两部分后每部分兵的血值总和
输入输出样例
输入样例#13
35
20
32
输出样例#135 52
题目描述

解:每部分兵力最多为100人,

      血格值最多为100*40=4000,

我们可以进行背包,预处理出

i个人能够构成的所有血格值j,即f[j][i]

然后按照已经得到的f[j][i],枚举第一部分的血格值,

从而得到最优解。

 1 #include<algorithm>
 2 #include<iostream>
 3 #include<cstring>
 4 #include<string>
 5 #include<cstdio>
 6 #include<cmath>
 7 #include<queue>
 8 #define inf 100000000
 9 using namespace std;
10 int n,f[80010][200];
11 int sum,ans1,ans2;
12 int main()
13 {
14     scanf("%d",&n);
15     f[0][0]=1;
16     for(int i=1,x;i<=n;++i)
17     {
18        scanf("%d",&x);
19        for(int j=8000;j>=x;--j)
20         for(int k=100;k>=1;--k)    
21          f[j][k]=f[j][k]||f[j-x][k-1];
22        sum+=x;
23     } 
24     int dep=1e9;
25     for(int j=sum;j>=0;--j)
26      if(f[j][n/2] && f[sum-j][n-n/2])
27      {
28          int l=min(j,sum-j),r=max(j,sum-j);
29          if(r-l<dep) ans1=l,ans2=r,dep=r-l;
30      }
31     cout<<ans1<<" "<<ans2; 
32     return 0;
33 }
View Code

 

转载于:https://www.cnblogs.com/adelalove/p/8908059.html

相关文章:

  • 洛谷 2055 BZOJ 1433 [ZJOI2009]假期的宿舍
  • UVA 10891 Game of Sum(区间DP(记忆化搜索))
  • Python学习4,字符串
  • BZOJ 3097: Hash Killer I
  • [转组第一天] | 调研XSS攻击
  • 2018年最新搜索引擎转跳JavaScript代码(竞价广告专用)
  • Java多线程实现的三种方式
  • 服务端渲染
  • 【转】数据库范式(1NF 2NF 3NF BCNF)
  • 父元素与子元素之间的margin-top问题(css hack)
  • 20180427积累
  • 关于sqoop --split-by 及 -m的理解
  • 20165301陈潭飞2017-2018-2 20165301 实验三《Java面向对象程序设计》实验报告
  • 往idea中导入已有的web项目
  • webpakc4.0移除了 CommonsChunkPlugin 组建
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • CentOS7 安装JDK
  • Create React App 使用
  • gitlab-ci配置详解(一)
  • Javascript弹出层-初探
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • LeetCode29.两数相除 JavaScript
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • vue--为什么data属性必须是一个函数
  • webpack入门学习手记(二)
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • win10下安装mysql5.7
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 如何编写一个可升级的智能合约
  • 项目实战-Api的解决方案
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • ​ssh免密码登录设置及问题总结
  • #LLM入门|Prompt#3.3_存储_Memory
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (ZT)一个美国文科博士的YardLife
  • (zt)最盛行的警世狂言(爆笑)
  • (二)hibernate配置管理
  • (三)mysql_MYSQL(三)
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • (转)Oracle 9i 数据库设计指引全集(1)
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • .[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复
  • .net Application的目录
  • .NET CORE 2.0发布后没有 VIEWS视图页面文件
  • .net FrameWork简介,数组,枚举
  • .NET中统一的存储过程调用方法(收藏)
  • .xml 下拉列表_RecyclerView嵌套recyclerview实现二级下拉列表,包含自定义IOS对话框...
  • [ C++ ] STL_stack(栈)queue(队列)使用及其重要接口模拟实现
  • [ vulhub漏洞复现篇 ] ECShop 2.x / 3.x SQL注入/远程执行代码漏洞 xianzhi-2017-02-82239600
  • [ 常用工具篇 ] AntSword 蚁剑安装及使用详解