洛谷 P2813 母舰

原创 2017年01月04日 00:13:39

题目描述

在小A的星际大战游戏中,一艘强力的母舰往往决定了一场战争的胜负。一艘母舰的攻击力是普通的MA(Mobile Armor)无法比较的。

对于一艘母舰而言,它是由若干个攻击系统和若干个防御系统组成的。两艘母舰对决时,一艘母舰会选择用不同的攻击系统去攻击对面母舰的防御系统。当这个攻击系统的攻击力大于防御系统的防御力时,那个防御系统会被破坏掉。当一艘母舰的防御系统全部被破坏掉之后,所有的攻击都会攻击到敌方母舰本身上去造成伤害。

这样说,一艘母舰对对面的伤害在一定程度上是取决于选择的攻击对象的。

在瞬息万变的战场中,选择一个最优的攻击对象是非常重要的。所以需要写出一个战斗系统出来,判断出你的母舰最多能对对手造成多少伤害并加以实现。

输入输出格式

输入格式:

输入第一行两个整数M和N,表示对方母舰的防御系统数量和你的母舰的攻击系统数量。

接着M行每行一个整数每一个表示对方防御系统的防御力是多少。

接着N行每行一个整数每一个表示己方攻击系统的攻击力是多少。

输出格式:

输出仅有一行,表示可以造成的最大伤害。

输入输出样例

输入样例#1:
3 5 
1000 
2000 
1200 
2100 
2000 
1200 
1000 
1000
 
输出样例#1:
2000
 

说明

对于80%的数据有 1 <= N , M <= 1000

对于100%的数据有 1 <= N , M <= 100000

对样例的解释:

对方防御系统有3个,防御值为1000(a),2000(b),1200(c),己方攻击系统有5个,攻击值为2100(d),2000(e),1200(f),1000(g),1000(h)。第1轮攻击的最优方案是d攻击b,e攻击c,f攻击a,g和h攻击对方母舰本身,造成2000点伤害。

 

解题思路

         本题可用贪心求解,将敌方防御系统防御值和我方攻击系统攻击值分别从小到大排序,再依次从小到大枚举敌方防御系统,每枚举一个防御系统,就在我方还剩着的攻击系统中找到最小的且可以爆破这个防御系统的攻击系统,攻击;完爆敌方防御系统后,将还剩下的攻击值累加即得到答案。

         为何排序和枚举时是从小到大呢?因为大的要留着攻击母舰啊!(从大到小50TAT


#include<cstdio>
#include<algorithm>
using namespace std;
int cmp(const int & a,const int & b)//其实完全没必要cmp,sort默认升序
{
    return a<b;
}
int main()
{
    int fang[100010]={0},gong[100000];
    int m,n;
    int f=0,g=-1;
    int ans=0;
    scanf("%d%d",&n,&m);
    if(n>=m)
    {
        printf("0");
        return 0;
    }
    for(int i=0;i<n;i++)
        scanf("%d",&fang[i]);
    for(int i=0;i<m;i++)
        scanf("%d",&gong[i]);
    sort(fang,fang+n,cmp);
    sort(gong,gong+m,cmp);
    for(int i=0;i<n;i++)
    {
        for(int j=g+1;j<m;j++)
        {
            g=j;
            if(gong[j]>fang[i])
            {
                //g++;
                gong[j]=0;
                fang[i]=0;
                break;
            }
        }
    }
    g=0;
    while(g<m) ans+=gong[g++];
    printf("%d",ans);
    return 0;
}


版权声明:本文为博主原创文章,未经博主允许不得转载

相关文章推荐

洛谷P1156 垃圾陷阱 背包DP

题目大意:一头牛被困在一个初始为空的垃圾坑里,之后会扔下一些垃圾。每个垃圾都可以用来吃或堆放,并且堆放垃圾不用花费时间。这头牛开始时有足够持续10小时的能量,给定一些垃圾扔下的时间、高度与吃掉能提供的...
  • YihAN_Z
  • YihAN_Z
  • 2016年08月07日 12:24
  • 763

洛谷 P1123 取数游戏

搜索
  • Rlt1296
  • Rlt1296
  • 2016年11月13日 22:42
  • 275

洛谷P1357 花园 网络题解的加速优化的解释

洛谷题目链接 网络题解 代码和注释 #include #include #include using namespace std; const int mi[]{1,2,4,8,16,32}; ...

洛谷 P1428 小鱼比可爱

P1428 小鱼比可爱 题目提供者yeszy 标签 树状数组 难度 入门难度 题目描述 人比人,气死人;鱼比鱼,难死鱼。小鱼最近参加了一个“比可爱”比赛,比的是每只鱼的可...

洛谷 P1006 传纸条

洛谷 P1006 传纸条 题目描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题。一次素质拓展活动中,班上同学安排做成一个m行n列的矩阵,而小渊和小轩被安排在矩阵对角线的两端...

【洛谷 P1186】玛丽卡 spfa+删边

题目描述麦克找了个新女朋友,玛丽卡对他非常恼火并伺机报复。因为她和他们不住在同一个城市,因此她开始准备她的长途旅行。在这个国家中每两个城市之间最多只有一条路相通,并且我们知道从一个城市到另一个城市路上...

洛谷 P1021 邮票面值设计

搜索+背包
  • Rlt1296
  • Rlt1296
  • 2016年10月08日 18:45
  • 299

洛谷OJ - P1064 - 金明的预算方案(并查集+附加条件)

题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N元钱就行...

洛谷 P2672 推销员

贪心
  • Rlt1296
  • Rlt1296
  • 2016年11月01日 18:27
  • 506

【洛谷P3377】【模板】左偏树(可并堆)

题目描述如题,一开始有N个小根堆,每个堆包含且仅包含一个数。接下来需要支持两种操作:操作1: 1 x y 将第x个数和第y个数所在的小根堆合并(若第x或第y个数已经被删除或第x和第y个数在用一个堆内,...
  • w_yqts
  • w_yqts
  • 2017年04月20日 21:16
  • 149
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:洛谷 P2813 母舰
举报原因:
原因补充:

(最多只允许输入30个字)