Codeforces Round #207 (Div. 2) 赛后补题

rating又掉了,连续几场cf场场一题,太危险了。

思维太过局限,平时反思的又太少,显然拙计。

以后每场cf都写个总结,好好反思一下。


A. Group of Students 

B. Flag Day

这题比赛时大概想了一下,没什么想法就放弃了,现在想来完全是太懒,连题目那么明确的提示都没有注意。

每只队伍中最多只有1个人以前出现过(且最多只能出现一次)。所以每次判断3人中是否有人出现过,如果有,那么该人的编号不变,否则判为1,假设已知的人编号为p1,然后对另外两人分别编号为p2=p1%3+1,编号为p3=p2%3+1.这样编号就不会产生冲突。

C. Knight Tournament

比赛时看完题目就有了想法,想到了区间覆盖,然后由于之前已经覆盖的不能再被覆盖,于是只要倒着进行区间更新即可。注意如果xi在(Li,Ri)内,则要把区间分成(Li,Xi-1),(Xi+1,Ri)两端在进行覆盖。结果由于太久没写过线段树,连区间更新都出了点问题,调试了几次发现过不了样例后就去搞E题去了。

D. Xenia and Hamming

对于长度互质的情况,假设长度为p,q,(p,q)=1.

由定理可知p*x+1通过模q的完全剩余系。所以两串长度互质时串1的每个字符都会和串2的每个字符对应一遍。

对于长度非互质的情况,假设长度为p,q.(p,q)=d

可由非互质情况YY出串1的第i个字符可与串2的第i+d,i+2*d...对应(可在草稿纸上自行验证)

然后将串1,串2扫一遍,将第i位出现的字符c存储在a[i%d][c],b[i%d][c]中。然后对于每一位i,相同的数量为a[i][j]*b[i][j](0<=j<=25),注意这是串1,串2长度为p,q最小公倍数时的结果,再乘以n*d/q转换成长度在n*p时的结果即可。

最后用总长度n*p减去相同的部分.

E. Compartments

给你n个车厢,问你是否使所有车厢的人数都在0,3,4中产生。

最后17分钟才决定看E题,看完感觉情况很多,一直调试到比赛结束。

首先用1,2去凑成3,使得1,2中某一项为0.

接下来判断剩余1,还是剩余2。

1.如果剩余1,则将3个1凑成3,最后1的数量可能为0,1,2

0的情况显然.

1的情况判断是否有3,有则可以凑成4,若没有3,判断是否有2个4,有则可以凑成3.  没有输出-1

2的情况判断是否有4,有则可以凑成3,若没有4,则判断是否有2个3,有则可以凑成4  没有输出-1

2.如果剩余2,则将3个2凑成2个3.最后2的数量可能为0,1,2

0的情况显然。

1的情况判断是否有4,有则可以凑成3,若没有4,则判断是否有2个3,有则可以凑成4 没有输出-1

2的情况则直接2个2凑成4即可。









你可能感兴趣的:(Codeforces Round #207 (Div. 2) 赛后补题)