jjzjj

codeforces

全部标签

Educational Codeforces Round 149 (Rated for Div. 2)

Problem-E-Codeforces思路:我们把比赛看成K层(0~K-1)的完美 二叉树按照题目的要求,第k层我们需要把(1我们讨论第k层输的队伍的方案数首先,我们需要把那些指定在k层这里哪个位置输的位置处理好,如果有两个队伍输在一个位置,无解。处理完后,那些还没有被特别指定哪个队伍属于这个位置的有cnt个,显然对于这些位置,当前只剩下两个空位(一个给这一层这个位置输的人,一个给这一层赢的人),如果赢的人位置没有指定,显然输的人可以任取这两个位置其中一个,如果指定,只能取剩下的一个所以我们也要处理1~(1所以这一层贡献的方案数就是,A为排列,tmp表示这些cnt位置如果有一个是有两个没有指

codeforce第874轮(div3)

地址:codeforce第84轮(div3)A:题目的意思是:给定我们一堆包含两个字符的字符串,字符串a和字符串b只要a的后一个字母和b的前一个字母相等即可链接,现在给出最后链接好的字符串,问我们最少能用多少个形如a和b的字符串可以链接;实际上就是问我们,用多少个包含两个字符的字符串可以构造出答案,可以直接把所有情况写出来,去重即可;这里可以直接用set去重,你也可以用map,反正哈希表基本都可以代码如下:#include#includeusingnamespacestd;seta;intmain(){ intt; cin>>t; while(t--) { a.clear(); intn;

Codeforces Round 873 (Div. 1) B1.Range Sorting (Easy Version)(单调栈)

题目给定长为n(n对于每个子数组,其美丽值定义为操作任意次,使得子数组增序的最小秒数每次操作,你可以选择两个下标[l,r],将区间[l,r]排增序,代价是r-l秒求所有子数组的美丽值之和思路来源hxu10代码题解感觉和BZOJ1345序列问题Sequence(思维/单调栈)_Code92007的博客-CSDN博客类似单调栈还是非常巧妙,每次补的时候都有一点惊艳的感觉枚举左端点,单增遍历右端点,单调栈维护最大值,实际是一个递增的栈,元素(mx,cost)表示(当前前缀最大值,当前前缀最大值所在的这段区间排序所需要的代价)每次用当前值a[j]将大于当前值的最大值弹栈,这表明如果a[j]左侧有一个比

Codeforces Round 874 (Div. 3)

A.MusicalPuzzle题意:用最少的长度为2的字符串按一定规则拼出s。规则是:前一个字符串的尾与后一个字符串的首相同。分析:统计s中长度为2的不同字符串数量。代码:#includeusingnamespacestd;typedeflonglongLL;constintN=1e5;intmain(){std::ios::sync_with_stdio(false);cin.tie(0),cout.tie(0); intt; cin>>t; while(t--) { unordered_mapmp; intn; cin>>n; strings; cin>>s; intc

Codeforces Round #834 (Div. 3) A~E题解

原题地址:CodeforcesRound#834(Div.3)题目:A.Yes-Yes?题意:    给定一个字符串s,看这个字符串s是不是多个Yes组成的字符串ans=“YesYesYesYesYes...”的子串,因为题目所给定的s的长度为50,那么我们定义一个长度为100的“YesYes...”串ans,然后看s是否是ans的子串即可代码:        #include#include#include#include#include#include#includetypedeflonglongll;usingnamespacestd;constintN=1e5+10;constintm

Codeforces Round #791 (Div. 2)(A-D)

CodeforcesRound#791(Div.2)(A-D)A.AvtoBus题意:给你n,问满足4x+6y=n4x+6y=n4x+6y=n的x+yx+yx+y的最小值和最大值是多少?x,yx,yx,y都是非负整数。题解:n如果是奇数,无解。如果是偶数,等式除以2,考虑2x+3y=n2x+3y=n2x+3y=n。要想使得x+yx+yx+y尽可能大,那么x要尽量多,就需要找最小的y满足n−3yn-3yn−3y是偶数,分别讨论摸3的各种情况。反之同理。#includeusingnamespacestd;typedeflonglongll;typedefpairint,int>pii;consti

Codeforces Round 871 (Div. 4)

A.LoveStory题意:给定n个长度为10的字符串,问其与codeforces字符串的对应下标字母不同的个数。分析:对于每个字符串从前往后依次和“codeforces”对应字符比较然后统计不同字母数即可code:#includeusingnamespacestd;intmain(){ std::ios::sync_with_stdio(false); cin.tie(0),cout.tie(0); strings="codeforces"; intt; cin>>t; while(t--) { strings2; cin>>s2; intcnt=0; for(inti=0

Codeforces Round 860 (Div. 2) 题解

AShowstopper#includeusingnamespacestd;#defineFor(i,n)for(inti=1;in;i++)#defineFork(i,k,n)for(inti=k;in;i++)#defineForkD(i,k,n)for(inti=n;i>=k;i--)#defineRep(i,n)for(inti=0;in;i++)#defineForD(i,n)for(inti=n;i;i--)#defineRepD(i,n)for(inti=n;i>=0;i--)#defineForp(x)for(intp=pre[x];p;p=next[p])#defineFor

Codeforces Round 867 (Div. 3)

A.TubeTubeFeed分析:从所有a[i]+i-1code:#includeusingnamespacestd;constintN=55;inta[N],b[N];intmain(){std::ios::sync_with_stdio(false);cin.tie(0),cout.tie(0); intt; cin>>t; while(t--) { intn,m; cin>>n>>m; for(inti=0;i>a[i]; for(inti=0;i>b[i]; ints=0,res=0,idx=-1; boolflag=false; for(inti

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

视频讲解:TBDA.ThreeDoors题目大意有333个门和333把对应的钥匙。其中222把钥匙分别在222扇门后,111把在手上。打开门才能获得门后的钥匙,问能否打开所有的门。题解判断前两次开的门后,是否有钥匙即可。参考代码#includeusingnamespacestd;typedeflonglongll;intmain(){ intT,x,a[5],now; scanf("%d",&T); while(T--) { scanf("%d%d%d%d",&x,&a[1],&a[2],&a[3]); now=3^2^1^a[1]^a[2]^a[3]; if(a[now]==0||a[