洛谷 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;
}


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

|洛谷|贪心|P2813 母舰

https://www.luogu.org/problem/show?pid=2813 90分程序,TLE第一个点 把两个数组从小到大排序,然后尽量用我方较为小的系统去打敌人较大的系统 #inc...
  • Darost
  • Darost
  • 2016年11月14日 21:41
  • 140

母舰

QAQ#include #include #include using namespace std; int f[100010]; int g[100010]; bool w[100010];...
  • qq_35914587
  • qq_35914587
  • 2017年08月19日 09:38
  • 74

航天母舰

航天母舰          警报声,又在不停的拉响,喇叭里不停的喊着,“各战斗人员各就各位,这不是演习,这不是演习”,我和机长两个人立马站起,随大队跟着队长快速的穿过玄廊,来到我们各自的武旋五旁,按照...
  • laotou99
  • laotou99
  • 2015年10月22日 15:57
  • 385

我的洛谷博客

https://djh-oier.blog.luogu.org/(蒟蒻)
  • qq_37654726
  • qq_37654726
  • 2017年12月23日 10:18
  • 109

对于洛谷提高试炼场-动态规划篇的爆破

题外话 由于本蒟蒻的动态规划实在是太弱啦,所以有必要爆破一下洛谷提高试炼场。里面有很多非常好,难度也合适的动态规划题……(然而你还是抄了不少题解) niconiconi!让我们一起开始爆破吧。 ...
  • litble
  • litble
  • 2017年11月05日 19:53
  • 185

洛谷题目按难度点评---入门难度

洛谷题目按难度点评---入门难度 1.p1421 小玉买文具 难度:入门难度 考点:输入,输出,整数的四则运算 适用:小学生 2....
  • mrcrack
  • mrcrack
  • 2017年03月05日 11:25
  • 1100

洛谷题目按难度点评---普及

此块内容不包含本博客 洛谷试炼场---新手村 洛谷试炼场---普及练习场 洛谷试炼场---提高历练地 里所涉及的内容。 1.//P2347 砝码称重 //采用枚举的方式,对每组重量设置一个访...
  • mrcrack
  • mrcrack
  • 2017年10月01日 23:27
  • 268

洛谷 U5872 作弊

思路
  • SenyeLicone
  • SenyeLicone
  • 2016年11月18日 21:27
  • 503

洛谷——P3366 【模板】最小生成树

题目描述如题,给出一个无向图,求出最小生成树,如果该图不连通,则输出orz 输入格式:第一行包含两个整数N、M,表示该图共有N个结点和M条无向边。(N...
  • peter_zhu01
  • peter_zhu01
  • 2017年03月09日 16:50
  • 210

洛谷试炼场---普及练习场

洛谷试炼场---普及练习场 简单的模拟 1. 2. 3. 4. 5. 6. 交叉模拟 1. 2. 3. 4. 5. 排序 1. 2. 3. 4. 排序Ex 1. 2. 3. 4. 字...
  • mrcrack
  • mrcrack
  • 2017年03月12日 19:05
  • 2022
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:洛谷 P2813 母舰
举报原因:
原因补充:

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