【SG+奇偶性压状态】江南乐
传送门:BZOJ3576
思路:
- 考虑暴力求出不同个数石子的SG值,直接枚举后继状态,然后会TLE;
- 发现对于i个石子,分成j堆数后每堆石子的个数可能是$\large \lfloor\frac{i}{j}\rfloor,\lfloor\frac{i}{j}\rfloor+1$;
- 对于相同的i,显然可以找到不同的$\large \lfloor\frac{i}{j}\rfloor,\lfloor\frac{i}{j}\rfloor+1$,而后继状态实际只与个数为$\large \lfloor\frac{i}{j}\rfloor,\lfloor\frac{i}{j}\rfloor+1$石子的堆数的奇偶性有关,所以有很多状态是重复的;
- 考虑快速求出$\large \lfloor\frac{i}{j}\rfloor$相同时的后继状态:如果j只有1个,那么直接算;如果有多个j,只需算前2个即可。
代码如下:
|
|