Educational Codeforces Round 100 A—D题题解
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题题解相关推荐
- 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 ...
- Educational Codeforces Round 112(Div.2) ABC题解
D题好像可以做一做,挖个坑以后做好了来填(doge Educational Codeforces Round 112(Div.2) 题目列表 1.A 2.B 3.C 1.A 原题链接 题目大意 有三种 ...
- Educational Codeforces Round 100 (Rated for Div. 2)补题记录
总结:感觉这个educational场好难啊(蒟蒻视角),又被虐了,唉 A. Dungeon 每一枪会造成1点伤害对一个单位,但是当开7的倍数枪时会造成3点伤害 每7次一个轮回,一个完整的轮回共造成9 ...
- Educational Codeforces Round 30 A[水题/数组排序]
A. Chores time limit per test 2 seconds memory limit per test 256 megabytes input standard input out ...
- Educational Codeforces Round 132 div.2 A-F题解
视频讲解:TBD A. Three Doors 题目大意 有 333 个门和 333 把对应的钥匙.其中 222 把钥匙分别在 222 扇门后,111 把在手上.打开门才能获得门后的钥匙,问能否打开所 ...
- 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题 ...
- Educational Codeforces Round 103 (Rated for Div. 2)前四题
Educational Codeforces Round 103 (Rated for Div. 2) 第二次被别人hack,悲 A - K-divisible Sum 题意 给定两个整数 n,kn, ...
- Educational Codeforces Round 114 (Rated for Div. 2) (A ~ F)全题解
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Educational Codeforces Round 114 (Rated for Div. 2) ...
- Educational Codeforces Round 106 (Rated for Div. 2)(A ~ E)题解(每日训练 Day.16 )
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 Educational Codeforces Round 106 (Rated for Div. ...
最新文章
- 《OpenCV3编程入门》学习笔记1 邂逅OpenCV
- 【小贴士】在线画流程图工具
- 模拟信号与离散信号之间的频率关系(由模拟信号采样得到的离散信号)
- Jquery动画效果--地铁站名指示等效果
- 每个前端开发者必会的二十个JavaScript面试题
- 近世代数--环同态--环的第二同构定理
- 汇编语言转成c语言,如何把汇编语言转换成C语言
- C语言内存字节对齐小结
- Caused by: java.io.IOException: Unable to initialize any output collector
- 10本书,搞定这门全球1000万程序员在用的编程语言
- C语言——确定char、short、int和short变量有符号和无符号时的取值范围
- 关于分辨率和地图打印的一些问题
- 计算机教师专业知识,小学信息技术教师专业知识考试复习题及答案【精选】.doc...
- android上传字符串到服务器,【图片】【转】通过Android 客户端上传数据到服务器【aide吧】_百度贴吧...
- Bmrxntfj.UIMapper界面对象映射
- 【转】Boost库概述
- PHP如果某商品下的所有货品库存都为0,则下架该商品
- 书籍推荐-docker入门书籍
- 「 神器 」极简网速监控悬浮窗软件
- 错误代码0x800F081F怎么解决,安装NET Framework
热门文章
- 2022网安保研经验帖
- 算法导论-----最长公共子序列LCS(动态规划)
- java可视化计时器,java – 使用计时器动画JPanel(幻灯片)
- 气体灭火系统和自动喷水灭火系统之区别
- 坚持记账的五大好处,你都知道吗?
- 人类活动识别---数据集UCI-HAR简介
- 华为机试【连续出牌数量】
- 一个变量命名神器:支持中文转变量名
- 十种深度学习算法要点及代码解析(转)
- {ResponseInfo:com.qiniu.http.Response@62bd765,status:400, reqId:d4kAAACMt2hWMSEW, xlog:X-Log, xvia:,