牛客小白月赛65
说实话题目质量一次比一次好。
A
注意到a和b的数量不能为负否则他们张成的空间为他们最大公约数的倍数。
这里枚举ab的数量1~1000即可。
B
实际上是字符串匹配问题,暴力可以过。
又打了一遍KMP算是复习。
C
利用一个pre数组记录前面的人。
询问的时候暴力向前跳 跳过的就缩起来就行了。
D
注意到后手可以进行与先手相反的操作使得a b同时-3。
不妨设a为ab中较小者。那么考虑a%3后 若a==0 后手必胜 那么后手一定会让a不断-3
同时若a1且b1同上后手必胜。考虑其他情况先手可以先进行一步上述末尾局面的操作转为后手同时迎来后手必胜局面。
所以除了上述两种情况其余情况先手必胜。
E
容易想到最多满足条件的排列为n,n-1,...1
一个数字x放在最前端满足条件数为Log[(x-1)]+1
类似于逆序对的试填法,先考虑n放在第一位带来的影响和k的大小。
小于就放上去反之放在中间某个位置剩下的分别反着放即可。
其余数字同理。
F
这个题很有意思。
我觉得出的很好是一个不多见的树上贪心问题。
先考虑根节点,设儿子中最大的时间为son,儿子总时间为sz.
容易想到若son<=sz-son 则双开时间可以为sz/2 这里注意奇偶。
证明使用归纳来证明。
如果不是呢 那就得考虑son里面的双开时间了 设son里面双开时间为f[son]
如果son-f[son]-f[son]<=sz-son 还是可以sz/2
反之为 sz+f[son]
这样求根的最大双开时间即求儿子的最大双开时间。可以递归来做。
考虑正确性 如果为前两种情况 答案是最小的。
后一种情况答案仍是最小的。
证毕。