zoukankan      html  css  js  c++  java
  • 猫狗大战

    新一年度的猫狗大战通过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
  • 相关阅读:
    sabaki and leelazero
    apply current folder view to all folders
    string operation in powershell
    wirte function in powershell
    add environment path to powershell
    Module in powershell
    sql prompt
    vmware中鼠标在部分区域不能使用
    调整多个控件的dock的顺序
    行为型模型 策略模式
  • 原文地址:https://www.cnblogs.com/adelalove/p/8908059.html
Copyright © 2011-2022 走看看