A. Dungeon

题目传送门:

A. Dungeon

题目大意:

三个怪物具有a,b,c的血量,每发射一次炮弹,会对一个怪物造成一点伤害。每发射6次之后,第7次就是蓄力炮,对三个怪物同时造成一点伤害。问三个怪物能不能被同一个蓄力炮同时杀死。

思路:

如果a + b + c 的和sum是9的倍数原因是只有9的倍数才可能被蓄力炮同时秒掉。且min(a,b,c)>=sum/9 ,因为在最后一次蓄力炮之前,每个怪物都不能死。

AC Code

#include<bits/stdc++.h>
using namespace std;
int main()
{int t;scanf("%d",&t);while(t--){int a,b,c;scanf("%d%d%d",&a,&b,&c);int sum=a+b+c;if(sum%9) printf("NO\n");else{int k=sum/9;if(a>=k&&b>=k&&c>=k) printf("YES\n");else printf("NO\n");   }}//system("pause");return 0;
}

B. Find The Array

题目传送门:

B. Find The Array

题目大意:

给你一个序列a,问你能不能构造出一个序列b满足
1、bi % bi+1 == 0 或 bi+1%bi==0
2、

思路:

我们发现
X=1 + a [ 2 ] + 1 + a [ 4 ] + 1 ……

Y=a [ 1 ] + 1 + a [ 3 ] + 1 + a [ 5 ] + ……

Wx = S - X = a [ 1 ] + a [ 3 ] + a [ 5 ] + ……- n/2
Wy = S - Y =a [ 2 ] + a [ 4 ] + a [ 6 ] ……- n/2
Wx + Wy = S - n

那么显然Wx和Wy中必然有以一种 <= (S-n) / 2 。满足题目要求

AC Code

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
LL a[55];
int main()
{int t;scanf("%d",&t);while(t--){int n;scanf("%d",&n);LL sum=0;for(int i=1;i<=n;i++){scanf("%d",&a[i]);sum=sum+a[i];}LL ans=0;for(int i=1;i<=n;i=i+2)ans=ans+a[i]-1;if(ans*2<=sum){for(int i=1;i<=n;i++){if(i%2) printf("1 ");else printf("%d ",a[i]);}}else{for(int i=1;i<=n;i++){if(i%2) printf("%d ",a[i]);else printf("1 ");}}printf("\n");}//system("pause");return 0;
}

C. Busy Robot

题目传送门:

C. Busy Robot

题目大意:

有n条指令,每条指令为在ti时刻,另机器人向xi点处移动,当机器人正在移动时,机器人会忽略指令,直到完成当前指令。在[ ti , t i+1 ] 时间内,机器人移动到目标点xi,则res++。(注意包括被忽略的指令)

思路:

其实就是一个比较恶心的模拟,具体细节见代码。

AC Code

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N=1e5+10;
LL ti[N],x[N];
int main()
{int t;scanf("%d",&t);while(t--){int n;scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%lld%lld",&ti[i],&x[i]);ti[n+1]=1e10;//将n+1点的时间设置为无限大int idx=1;LL now=0,pos=0;int flag=0,res=0;while(idx<=n){LL y=pos;LL b=ti[idx];now=ti[idx]+abs(x[idx]-pos);if(x[idx]<pos) flag=-1;//机器人的行进方向else flag=1;pos=x[idx];int k=idx+1;//中间要跳过的指令while(ti[k]<now&&k<=n)k++;for(int i=idx;i<k;i++){LL st=min(ti[i],now);LL ed=min(ti[i+1],now);LL stx=y+flag*(st-b);LL edx=y+flag*(ed-b);if(x[i]>=min(stx,edx)&&x[i]<=max(stx,edx)) res++;//判断满足条件的指令数量}idx=k;}printf("%d\n",res);}//system("pause");return 0;
}

D. Pairs

题目传送门:

D. Pairs

题目大意

将2n个数,分成n对。其中x对进行取小操作,剩下的数进行取大操作。给你一个n个元素的序列a。问你x可以为多少种数,能得到a数组。

思路:

知道最少有多少个数需要取小得到和最少多少个数需要取大得到。n - 两者的数量 + 1 即为答案。

如何取呢。以计算最少需要取小的数为例。记sum为比当前的数小且不在序列a中且还未被匹配的数。
那么如果sum>0,那么我们就可以找一个比当前小的数,那么当前这一对进行的就是取大的操作。(能进行取大操作就尽量取大,因为我们现在求的是取小的最少次数)
如果sum==0,那么当前这一个数就只能找不在序列中且未匹配的最大的数,进行取小操作。

AC Code

#include<bits/stdc++.h>
using namespace std;
const int N=5e5+10;
int a[N];
int main()
{int t;scanf("%d",&t);while(t--){int n;scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%d",&a[i]);int minn=0,maxn=0;//取小的最小次数,和取大的最小次数int sum=0;for(int i=1;i<=n;i++){sum=sum+a[i]-a[i-1]-1;if(!sum) minn++;else sum--;}a[n+1]=2*n+1;sum=0;for(int i=n;i>=1;i--){sum=sum+a[i+1]-a[i]-1;if(!sum) maxn++;else sum--;}printf("%d\n",n-minn-maxn+1);}//system("pause");return 0;
}

Educational Codeforces Round 100 A—D题题解相关推荐

  1. Educational Codeforces Round 100 (Rated for Div. 2)

    文章目录 Educational Codeforces Round 100 (Rated for Div. 2) A. Dungeon B. Find The Array C. Busy Robot ...

  2. Educational Codeforces Round 112(Div.2) ABC题解

    D题好像可以做一做,挖个坑以后做好了来填(doge Educational Codeforces Round 112(Div.2) 题目列表 1.A 2.B 3.C 1.A 原题链接 题目大意 有三种 ...

  3. Educational Codeforces Round 100 (Rated for Div. 2)补题记录

    总结:感觉这个educational场好难啊(蒟蒻视角),又被虐了,唉 A. Dungeon 每一枪会造成1点伤害对一个单位,但是当开7的倍数枪时会造成3点伤害 每7次一个轮回,一个完整的轮回共造成9 ...

  4. Educational Codeforces Round 30 A[水题/数组排序]

    A. Chores time limit per test 2 seconds memory limit per test 256 megabytes input standard input out ...

  5. Educational Codeforces Round 132 div.2 A-F题解

    视频讲解:TBD A. Three Doors 题目大意 有 333 个门和 333 把对应的钥匙.其中 222 把钥匙分别在 222 扇门后,111 把在手上.打开门才能获得门后的钥匙,问能否打开所 ...

  6. Educational Codeforces Round 104 (Rated for Div. 2)A-E题解

    Educational Codeforces Round 104 (Rated for Div. 2)A-E题解 比赛链接:https://codeforces.ml/contest/1487 A题 ...

  7. Educational Codeforces Round 103 (Rated for Div. 2)前四题

    Educational Codeforces Round 103 (Rated for Div. 2) 第二次被别人hack,悲 A - K-divisible Sum 题意 给定两个整数 n,kn, ...

  8. Educational Codeforces Round 114 (Rated for Div. 2) (A ~ F)全题解

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Educational Codeforces Round 114 (Rated for Div. 2) ...

  9. Educational Codeforces Round 106 (Rated for Div. 2)(A ~ E)题解(每日训练 Day.16 )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 Educational Codeforces Round 106 (Rated for Div. ...

最新文章

  1. 《OpenCV3编程入门》学习笔记1 邂逅OpenCV
  2. 【小贴士】在线画流程图工具
  3. 模拟信号与离散信号之间的频率关系(由模拟信号采样得到的离散信号)
  4. Jquery动画效果--地铁站名指示等效果
  5. 每个前端开发者必会的二十个JavaScript面试题
  6. 近世代数--环同态--环的第二同构定理
  7. 汇编语言转成c语言,如何把汇编语言转换成C语言
  8. C语言内存字节对齐小结
  9. Caused by: java.io.IOException: Unable to initialize any output collector
  10. 10本书,搞定这门全球1000万程序员在用的编程语言
  11. C语言——确定char、short、int和short变量有符号和无符号时的取值范围
  12. 关于分辨率和地图打印的一些问题
  13. 计算机教师专业知识,小学信息技术教师专业知识考试复习题及答案【精选】.doc...
  14. android上传字符串到服务器,【图片】【转】通过Android 客户端上传数据到服务器【aide吧】_百度贴吧...
  15. Bmrxntfj.UIMapper界面对象映射
  16. 【转】Boost库概述
  17. PHP如果某商品下的所有货品库存都为0,则下架该商品
  18. 书籍推荐-docker入门书籍
  19. 「 神器 」极简网速监控悬浮窗软件
  20. 错误代码0x800F081F怎么解决,安装NET Framework

热门文章

  1. 2022网安保研经验帖
  2. 算法导论-----最长公共子序列LCS(动态规划)
  3. java可视化计时器,java – 使用计时器动画JPanel(幻灯片)
  4. 气体灭火系统和自动喷水灭火系统之区别
  5. 坚持记账的五大好处,你都知道吗?
  6. 人类活动识别---数据集UCI-HAR简介
  7. 华为机试【连续出牌数量】
  8. 一个变量命名神器:支持中文转变量名
  9. 十种深度学习算法要点及代码解析(转)
  10. {ResponseInfo:com.qiniu.http.Response@62bd765,status:400, reqId:d4kAAACMt2hWMSEW, xlog:X-Log, xvia:,