思路讲解
感觉这题真出的没什么意思,纯粹就是看你有没有把题目读懂,还有K==1的特殊情况有没有想到。
AC代码
https://codeforces.com/contest/2075/submission/311347701
1 | // Problem: B. Array Recoloring |
感觉这题真出的没什么意思,纯粹就是看你有没有把题目读懂,还有K==1的特殊情况有没有想到。
https://codeforces.com/contest/2075/submission/311347701
1 | // Problem: B. Array Recoloring |
难点在于怎么把这个双循环搞成单循环

然后记得读题,那个栅栏仅能由两种颜色构成,多了,少了都不行。
这个+2也是比较迷,但加了就AC了,我也不知道为什么。
可能是原来比16还要多减一次1,但其实和16一样。
https://codeforces.com/contest/2075/submission/311344453
1 | // Problem: C. Two Colors |
题解还用了二进制分析?我看不懂,但我大受震撼。(做的时候没看)
我的理解是这样的,首先无关痛痒的操作,一定是交给floor做会往大里走,交给ceil做会往小里走。
然后那如果事关痛痒的操作,那么还是先floor做,再ceil做大,反之就小。
如果要系统的解释还是要依赖二进制。其实答案要么是 x/2n+m,要么是其+1。我们来解释一下。

我们发现,如果要将一个进位传递过去,会消耗所有路径上的1,因此并不会出现累加的情况。
其他就看官解吧,讲的很清楚。
https://codeforces.com/blog/entry/140702
主要就是要注意,ceil的话opX=1的时候会卡住,需要对这一情况进行预判。
1 | if(opX==1){ |
https://codeforces.com/contest/2082/submission/311004371
1 | // Problem: B. Floor or Ceil |
https://codeforces.com/contest/2052/submission/297107696
jianly的思路我觉得比官解更好(官解都看不懂是什么意思)
jianly的思路就是逆向思维,先将345612(这是输入进来的)转化为654321,再将654321转化为123456
整个过程我们都记录下来,reverse一下输出即可。
https://codeforces.com/contest/2052/submission/311474567
1 | // Problem: CF2052A Adrenaline Rush |