arc145
没打,在军训
a:
我们可以利用操作来实现AA...AAB和ABB...BB这样的近似回文串的东西。如果有一个B那么这样的字符串就是可行的。设回文串为S。S BAA...AAB S和S AB...BBBA S所以搞一个头尾,然后如果左边是B或右边是A那么就可以,否则判下左右是否相等,然后继续下去。然后有个代码小细节的优化。考虑直接看头尾,第一句话没判掉的情况只有A....B,然后这个在回文判掉了,所以A....B不行,其他都行。注意corner_case
b:
怎么是博弈论。首先a<=b且石子数>=a的是必胜态,考虑a>b,我们肯定得取完,不然下一个就是必胜态,那么首先1-(a-1)是必败,a是必胜,然后每a个分一组,然后前b个是必胜态,考虑下余数即可
c:
感性理解,肯定是12配对,34配对,邻项交换易证。首先考虑A为1 3 5...,B为2 4 6...。这样能有多少个子序列呢?考虑固定2 4 6...然后A的每个数放的位置也就有个范围了,容易发现这是个卡特兰数。然后上下交换左右交换都可以
d:
发现这个比较像差分将它变成差分数组,我们要保证差分数组中间没有相同的
看看lyc代码吧
怎么想的到的啊?
考虑三进制,假设所有三进制数每一位上都是0或1,然后将式子拆成\(x+y\mathrlap{\,/}{=}2z\)容易发现2z的每一位都是0或1,因为x,y不同,所以必然会有一位是1,所以第四个条件满足,然后将每个数乘上3,也满足条件,同时这个差必定是大于三的,所以通过整体加减n和一些数+1即可满足操作