这题卡常。按照正常的 O(n∗p)的解法,根据本题的数据范围,理论上也能出解。但我试了很多次,都无法通过(有 3 个点 T 了)。
后来思考优化方案时,发现题面
将t替换为:(x∗t+y) mod p
无论 t 多大,也就是无论a[i]的值是多少,只要进行一次变化,就会小于 p,变化结果在 0~p-1 之间。如果a[i]的值本来就大于等于 p,那么永远无法回到自己。而小于 p 的情况,可以先预处理 0 变成 0 的次数,1 变成 1的次数,p-1 变成 p-1 的次数。
最后可以用 O(n∗q) 的复杂度通过。