洛谷 P2813 母舰

简介: 题目描述 在小A的星际大战游戏中,一艘强力的母舰往往决定了一场战争的胜负。一艘母舰的攻击力是普通的MA(Mobile Armor)无法比较的。 对于一艘母舰而言,它是由若干个攻击系统和若干个防御系统组成的。

题目描述

在小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;
}
目录
相关文章
AcWing 2060. 奶牛选美(每日一题)
AcWing 2060. 奶牛选美(每日一题)
|
4月前
【洛谷】P2004 领地选择
洛谷 P2004 领地选择
43 2
【洛谷】P2004 领地选择
|
4月前
【洛谷】P1163 银行贷款
洛谷P1163 银行贷款
43 0
【洛谷】P1163 银行贷款
|
机器学习/深度学习
《蓝桥杯每日一题》背包dp·AcWing3382. 整数拆分
《蓝桥杯每日一题》背包dp·AcWing3382. 整数拆分
71 0
《蓝桥杯每日一题》递推·AcWing 3777. 砖块
《蓝桥杯每日一题》递推·AcWing 3777. 砖块
79 0
洛谷1102 A-B 暴力法
判断第 i 个数和 i 之后的每一个数的绝对值是否等于目标结果
|
存储
AcWing第98和99周赛
AcWing第98和99周赛
100 0
|
机器学习/深度学习 人工智能 安全
【AcWing周赛】AcWing第86场周赛
目录 <一>AcWing 4794. 健身 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解 <二>AcWing 4795. 安全区域 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解 <三>AcWing 4796. 删除序列 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解
80 0
|
机器学习/深度学习 编译器
【AcWing周赛】AcWing第85场周赛
目录 &lt;一&gt;Acwing 4791. 死或生 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解 &lt;二&gt;Acwing 4792. 最大价值 一、题目 1、原题链接 2、题目描述 二、解题报告: 1、思路分析 2、时间复杂度 3、代码详解 &lt;三&gt;Acwing 4793. 危险程度 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解 &lt;四&gt; 知识风暴 1、排序不等式 2、贪心法 3、数据范围 4、并查集 基本操作
83 0