总体思路: 输入护盾和攻击力,然后快速排序sort走起来,

排完序之后从第一个开始找,如果攻击力大于护盾,护盾继续下一个,

这个攻击力记录为0,如果小雨的话,那就攻击力继续下一个,护盾不动,

其中最为特别的地方也就是占了很大一部分数据点的,那就是护盾是0这种情况了,当护盾是零的时候,护盾继续下一个找,但是攻击力就不要动了。

然后让我来分布解析代码

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <complex>
#include <algorithm>
#include <climits>
#include <queue>
#include <map>
#include <set>
#include <iomanip> using namespace std; int hudun[100001],gongji[100001];

这是可食用的头文件,数组用来干啥,拼音打好了qwq

接下来

     scanf("%d%d",&n,&m);
for(int i=1; i<=n; ++i) {
scanf("%d",&hudun[i]);//护盾防御力
}
for(int j=1; j<=m; ++j) {
scanf("%d",&gongji[j]);//攻击力
}

输入防御系统和攻击力的数量

分别是n和m

然后for循环存入数组中去

然后

很简单的sort快速排序,虽然这个很容易爆炸,但是用在这个题中还是可以AC的

sort(hudun+1,hudun+n+1);//快速排序
sort(gongji+1,gongji+m+1);//快速排序

注意上面必须要+1哦,因为我上面输入的时候是从1开始到n或者到m的而不是从0开始的,如果是从0开始,那这个+1就是真的没用了哦

下面高潮来了!!!!!!!!!!!!

最核心的代码部分!!!!!!!!

int ans=0,js=1,jss=1;//计数器
while(jss!=n + 1) {//结束条件,也就是防护盾全部攻破的时候
if(js == m + 1 && jss != n + 1) {
printf("0\n");
return 0;
}
if(hudun[jss]==0) {//护盾是零的时候
jss++;
continue;
} else if(hudun[jss]<gongji[js]) {//可以打破护盾的时候
gongji[js]=0;
jss++;
js++;
continue;
} else {
js++;
continue;
}
}

ans是最后的答案先不用管它,这块用不到的,js是计数攻击力是第几个的计数器,那么jss显而易见就是防御系统的计数器啦

都从第一个开始找,如果护盾小于攻击力,护盾的计数器就累加,攻击力就变为零,因为可以看做和护盾抵消了

如果大于或者等于的话,那就继续找,也就是攻击力的计数器js累加,因为sort排好序了所以越往后面找伤害越大的

前面特判护盾是0的时候,只需要护盾的计数器jss累加就好了

结束条件当攻击力用完了但是护盾还有剩余的话,就结束输出0就好了

for(int i=1; i<=m; ++i) {
//printf("%d\n",gongji[i]);
ans+=gongji[i];//挨个加起来
}
printf("%d\n",ans);//输出
return 0;

最后从第一个开始累加,消耗掉的都变成了0,所以直接加就好了,加出来的数就是能够造成的伤害

完整代码双手奉上qwq

 1 #include <iostream>
2 #include <cstdio>
3 #include <cstring>
4 #include <cstdlib>
5 #include <complex>
6 #include <algorithm>
7 #include <climits>
8 #include <queue>
9 #include <map>
10 #include <set>
11 #include <iomanip>
12
13 using namespace std;
14
15 int hudun[100001],gongji[100001];
16
17 int main() {
18 int n,m;
19 scanf("%d%d",&n,&m);
20 for(int i=1; i<=n; ++i) {
21 scanf("%d",&hudun[i]);//护盾防御力
22 }
23 for(int j=1; j<=m; ++j) {
24 scanf("%d",&gongji[j]);//攻击力
25 }
26 sort(hudun+1,hudun+n+1);//快速排序
27 sort(gongji+1,gongji+m+1);//快速排序
28 int ans=0,js=1,jss=1;//计数器
29 while(jss!=n + 1) {//结束条件,也就是防护盾全部攻破的时候
30 if(js == m + 1 && jss != n + 1) {
31 printf("0\n");
32 return 0;
33 }
34 if(hudun[jss]==0) {//护盾是零的时候
35 jss++;
36 continue;
37 } else if(hudun[jss]<gongji[js]) {//可以打破护盾的时候
38 gongji[js]=0;
39 jss++;
40 js++;
41 continue;
42 } else {
43 js++;
44 continue;
45 }
46 }
47 for(int i=1; i<=m; ++i) {
48 //printf("%d\n",gongji[i]);
49 ans+=gongji[i];//挨个加起来
50 }
51 printf("%d\n",ans);//输出
52 return 0;
53 }

洛谷 P2813【母舰】 题解的更多相关文章

  1. 洛谷——P2813 母舰

    P2813 母舰 题目背景 广东汕头聿怀初中 Train#3 Problem 1 (有没有红警既视感~) 题目描述 在小A的星际大战游戏中,一艘强力的母舰往往决定了一场战争的胜负.一艘母舰的攻击力是普 ...

  2. 洛谷 P2813 母舰

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

  3. 洛谷NOIp热身赛题解

    洛谷NOIp热身赛题解 A 最大差值 简单树状数组,维护区间和.区间平方和,方差按照给的公式算就行了 #include<bits/stdc++.h> #define il inline # ...

  4. 洛谷P2827 蚯蚓 题解

    洛谷P2827 蚯蚓 题解 题目描述 本题中,我们将用符号 ⌊c⌋ 表示对 c 向下取整. 蛐蛐国最近蚯蚓成灾了!隔壁跳蚤国的跳蚤也拿蚯蚓们没办法,蛐蛐国王只好去请神刀手来帮他们消灭蚯蚓. 蛐蛐国里现 ...

  5. 洛谷P1816 忠诚 题解

    洛谷P1816 忠诚 题解 题目描述 老管家是一个聪明能干的人.他为财主工作了整整10年,财主为了让自已账目更加清楚.要求管家每天记k次账,由于管家聪明能干,因而管家总是让财主十分满意.但是由于一些人 ...

  6. [POI 2008&洛谷P3467]PLA-Postering 题解(单调栈)

    [POI 2008&洛谷P3467]PLA-Postering Description Byteburg市东边的建筑都是以旧结构形式建造的:建筑互相紧挨着,之间没有空间.它们共同形成了一条长长 ...

  7. [NOI 2020 Online] 入门组T1 文具采购(洛谷 P6188)题解

    原题传送门 题目部分:(来自于考试题面,经整理) [题目描述] 小明的班上共有 n 元班费,同学们准备使用班费集体购买 3 种物品: 1.圆规,每个 7 元. 2.笔,每支 4 元. 3.笔记本,每本 ...

  8. [洛谷P3948]数据结构 题解(差分)

    [洛谷P3948]数据结构 Description 最开始的数组每个元素都是0 给出n,opt ,min,max,mod 在int范围内 A: L ,R ,X 表示把[l,R] 这个区间加上X(数组的 ...

  9. [CodePlus 2017 11月赛&洛谷P4058]木材 题解(二分答案)

    [CodePlus 2017 11月赛&洛谷P4058]木材 Description 有 n棵树,初始时每棵树的高度为 Hi ,第 i棵树每月都会长高 Ai.现在有个木料长度总量为 S的订单, ...

  10. 洛谷P1189 SEARCH 题解 迭代加深

    题目链接:https://www.luogu.com.cn/problem/P1189 题目大意: 给你一个 \(n \times m\) 的矩阵,其中有一些格子可以走,一些各自不能走,然后有一个点是 ...

随机推荐

  1. 引用和自包含令牌(Reference Tokens and Introspection)

    访问令牌可以有两种形式:自包含的和引用的. 自包含令牌(Self-contained tokens): 使用受保护的.有时间限制的数据结构,该结构包含元数据,并声明通过网络传递用户或客户机的身份.一种 ...

  2. MOOC 数据库笔记(四):关系代数

    关系代数 关系代数概述 特点 基于集合,提供了一系列的关系代数操作:并.差.笛卡尔积(广义积).选择.投影和更名等基本操作 以及交.连接和关系除等扩展操作,是一种集合思维的操作语言. 关系代数操作以一 ...

  3. Ambari深入学习(II)-实现细节

    在第一节中,我们简单讲了一下Ambari的系统架构.我们这一节主要分析Ambari的源代码,总览Ambari的具体实现方式及其工作细节. 一.Ambari-Server启动 Ambari-Server ...

  4. mssql server 排序 以及like语句

    当我们按照某个字段排序时,通常使用order by语句,如果该字段存在null值,则会把null值的这条放到最上面, 那我们是否有办法解决呢? 答案是肯定的: ORDER BY CASE WHEN O ...

  5. Kubernetes(K8s)基础知识(docker容器技术)

    今天谈谈K8s基础知识关键词: 一个目标:容器操作:两地三中心:四层服务发现:五种Pod共享资源:六个CNI常用插件:七层负载均衡:八种隔离维度:九个网络模型原则:十类IP地址:百级产品线:千级物理机 ...

  6. 图片Image转换为base64编码的方法

    1.FileReader 通过XMLHttpRequest请求图片Blob数据格式,然后利用FileReader转换为dataURL function toDataURL(url, callback) ...

  7. Celery:Next Steps

    参考文档:http://docs.celeryproject.org/en/latest/getting-started/next-steps.html#next-steps

  8. 【故障处理】ORA-12162 错误的处理

    [故障处理]ORA-12162: TNS:net service name is incorrectly specified 一.1  场景 今天拿到一个新的环境,可是执行sqlplus / as s ...

  9. 用navicat操作oracle新建表空间、用户名、密码

    转载从:https://www.cnblogs.com/franson-2016/p/5925593.html 首先.我们来新建一个表空间.打开Navicat for Oracle,输入相关的的连接信 ...

  10. MySQL-查看DB文件位置

    show global variables like "%datadir%"