感觉好牛的题。
题目链接。
题意
你现在需要建造一个周长为
水井的砖块由很多层构成,如果存在相邻两层的某个位置,在这两层同时是砖缝,我们就认为这个水井是不稳固的。
构造一组放置砖块的方案,每一种砖块都可以使用任意多次。显然只需要构造相邻两层的方案即可。
题解
首先考虑如果只需要建造一层水井怎么做,显然直接 dp 优化一下能做到
那么假设现在存在一组建造一层水井的方案,并且这个方案没有使用长度为
因为我们可以直接把这个方案复制一遍,然后往右偏移
假设不存在这样的方案,那么如果此时长度为
现在我们考虑在如下限制下做出构造:上下两层使用的砖块顺序完全相同,并且偏移为
一个组合块为一个长度为
在第一行,其排列方式为先放长度为
假如这样能跑出一组解,那么整个问题就结束了。现在我们要证明若整个问题有解,则存在一组这样的构造方式。
首先考虑这组合法的方案存不存在上下偏移差为
现在整个环有至少一个上下差为
对于某一个部分来说,若其现在的方案中某一行没有使用长度为
否则,设两行长度均为
我们可以得到
在考虑,设这一行有
考虑这些长度
也就是说我们完全可以用这些砖块拼成组合块然后进行构造。证毕。
时间复杂度
update:qoj 上 T 了,你需要分治 NTT。