CodeTONRound2(Div.1+Div.2,Rated,Prizes!)题解A-Two0-1Sequences题意:有两个字符串\(a和b\),都是\(01\)字符串,可以进行一下操作看是否可以将\(a\)变成\(b\),设\(a_1\)和\(a_2\)表示的是字符串\(a\)的第一个字母和字母在满足可以操作的前提下,将\(a_2\)变成\(max(a_1,a_2)\),并将\(a_1\)删去在满足可以操作的前提下,将\(a_2\)变成\(min(a_1,a_2)\),并将\(a_1\)删去,思路:删去的时候肯定不能让字符串\(a\)的大小\(b\)的大小,并且得知后面的字符串一定要相
比赛链接链接A.ThreeDoors题目链接链接题目描述输入输出样例输入43012103223102130输出YESNOYESNO题目大意面前有三个门,编号分别为1,2,3。再给你一把编号为x的钥匙,打开每扇门后,可以有一把编号为a[i]的钥匙,判断所给的x是否能把三扇门都打开。思路按照题意进行模拟,并且用a[]存放钥匙编号,st[]用来判断门是否打开代码#include#include#include#include#includeusingnamespacestd;voidsolve(){ intx; cin>>x; inta[4]; cin>>a[1]>>a[2]>>a[3]; bo
比赛链接链接A.ThreeDoors题目链接链接题目描述输入输出样例输入43012103223102130输出YESNOYESNO题目大意面前有三个门,编号分别为1,2,3。再给你一把编号为x的钥匙,打开每扇门后,可以有一把编号为a[i]的钥匙,判断所给的x是否能把三扇门都打开。思路按照题意进行模拟,并且用a[]存放钥匙编号,st[]用来判断门是否打开代码#include#include#include#include#includeusingnamespacestd;voidsolve(){ intx; cin>>x; inta[4]; cin>>a[1]>>a[2]>>a[3]; bo
题意有个长度为n的排列p,[0,1,2,...n-1],你可以进行至多2*n次询问,每次询问两个i,j,返回gcd(pi,pj),让你在规定时间内猜出0在哪两个位置之一思路这是一道交互题,询问的上限是2n次通过三个数,可以去除掉一个不是0的数对三个数进行以下询问,gcd(a,i),gcd(b,i)如果gcd(a,i)!=gcd(b,i),那么其中a,b小的被i取代,因为a,b中假如有0,那么一定是大的数,那么小的数一定不是0如果gcd(a,i)==gcd(b,i),那么跳过i,因为假如i是0,因为数列每个数都不同,所必不可能相等那么for一遍数组,每次和当前位置i进行两次询问,最多2n的限制内
题意有个长度为n的排列p,[0,1,2,...n-1],你可以进行至多2*n次询问,每次询问两个i,j,返回gcd(pi,pj),让你在规定时间内猜出0在哪两个位置之一思路这是一道交互题,询问的上限是2n次通过三个数,可以去除掉一个不是0的数对三个数进行以下询问,gcd(a,i),gcd(b,i)如果gcd(a,i)!=gcd(b,i),那么其中a,b小的被i取代,因为a,b中假如有0,那么一定是大的数,那么小的数一定不是0如果gcd(a,i)==gcd(b,i),那么跳过i,因为假如i是0,因为数列每个数都不同,所必不可能相等那么for一遍数组,每次和当前位置i进行两次询问,最多2n的限制内
碎碎念这次a和b过的可能是有生以来最快的(?)然后写C写了一个多小时还没写出来(悲)最后剩不到二十分钟看了眼D,结果瞬间悟出了答案(属于是开题失误了)最后以最快速度写完,一抬头发现刚好时间到了(樂)属于是到手的紫名飞了呜呜C题题意思路比赛时没有注意到的一个重要性质是答案只与最大值和最小值相关,这是十分不应该的。注意到这一点后对所有smartness排序就成为了很自然的想法。接下来就是考虑对于左端点为l时维护当右端点r取到哪里时能凑出的topic的数目为m了,这可以利用双指针线性求出。D题题意大概就是说有个树,每个节点都可能是1或者是0,每过一秒所有节点的值都会变成它们儿子异或起来的值,叶子则会
碎碎念这次a和b过的可能是有生以来最快的(?)然后写C写了一个多小时还没写出来(悲)最后剩不到二十分钟看了眼D,结果瞬间悟出了答案(属于是开题失误了)最后以最快速度写完,一抬头发现刚好时间到了(樂)属于是到手的紫名飞了呜呜C题题意思路比赛时没有注意到的一个重要性质是答案只与最大值和最小值相关,这是十分不应该的。注意到这一点后对所有smartness排序就成为了很自然的想法。接下来就是考虑对于左端点为l时维护当右端点r取到哪里时能凑出的topic的数目为m了,这可以利用双指针线性求出。D题题意大概就是说有个树,每个节点都可能是1或者是0,每过一秒所有节点的值都会变成它们儿子异或起来的值,叶子则会
由于一次比赛被虐得太惨,,生发开始写blog的想法,于是便有了这篇随笔(找了个近期的cf比赛练练手(bushi))第一次写blog,多多包涵。第二场cf比赛,第一场打的Div2,被虐太惨,所以第二场挑了个Div4...比赛链接:https://codeforces.com/contest/1669A.Division 翻译(参考): t组样例,每组样例给出一个正整数,判断该整数所在的范围 题解: 签到题,分类讨论下即可B.Trip 翻译(参考): t组样例,每组给出一个长度为n的数组,对每组样例输出一个在该数组中出现三次及三次以上的数字(可能有多个,输出任意一个就好),若不存在
由于一次比赛被虐得太惨,,生发开始写blog的想法,于是便有了这篇随笔(找了个近期的cf比赛练练手(bushi))第一次写blog,多多包涵。第二场cf比赛,第一场打的Div2,被虐太惨,所以第二场挑了个Div4...比赛链接:https://codeforces.com/contest/1669A.Division 翻译(参考): t组样例,每组样例给出一个正整数,判断该整数所在的范围 题解: 签到题,分类讨论下即可B.Trip 翻译(参考): t组样例,每组给出一个长度为n的数组,对每组样例输出一个在该数组中出现三次及三次以上的数字(可能有多个,输出任意一个就好),若不存在
A.给定一个序列,对于任意1|ai−ak|+|ak−aj|=|ai−aj|,找满足条件的i和j并输出思路:观察样例,发现输出的是最大值和最小值,那么猜答案是最大值和最小值,进行证明若答案不是最大值和最小值,则一定存在一个k使得|ak-ap|大于|aj-ai|一定不满足|ai−ak|+|ak−aj|=|ai−aj|与命题矛盾所以记录最大值和最小值输出即可。代码: #includeusingnamespacestd;#definexfirst#defineysecond#defineendl'\n'#defineintlonglong#definedebug(x)coutconstintP=131