XXI Opencup, GP of Tokyo 乱做
https://codeforces.com/gym/102978
A. Ascending Matrix
考虑每个值的轮廓线,如果忽略最后一个限制时,就是求从右下到左上的 \(k-1\) 条不穿过路径的条数。做法是把起点和终点平移一下转成不相交然后用 LGV 引理。
现在加上了 \(a_{R,C}=V\) 的限制,那么相当于从下往上数的第 \(V-1\) 条路径在 \((R,C)\) 的下方。于是可以把 \((R,C)\) 也平移一下然后给所有在其下方的路径乘上 \(x\),最后求的就是行列式的 \(x^{V-1}\) 的系数。
可以代点值进去做行列式然后再插值回来,复杂度 \(O(K^2(N+M)+K^4)\)。
https://codeforces.com/gym/102978/submission/130049276
E. Edge Subsets
容易转化为 \(\gcd(A,B)=1\) 的情况。
将点 \(v\) 放在 \((x,y)\) 上,满足 \(x=\lfloor v/B\rfloor,yA\equiv v\bmod B\),这样每条边只可能为向上,向右,向右上或连接 \((x,B-1)\) 和 \((x+1,0)\) 。
考虑从左到右插头 dp,复杂度为 \(O(n2^B)\);从上到下插头 dp,由于最后一种边的存在需要记录最顶行的状态,复杂度为 \(O(n4^{n/B})\)。
拼一下,复杂度为 \(O(n2^{\sqrt{2n}})\)。
https://codeforces.com/gym/102978/submission/130017181
G. Games
\(k\)-nim 游戏结论,先手必败当且仅当将每一堆石子个数写成二进制,每位相加后均为 \(k+1\) 的倍数。
于是这题可以 \(k+1\) 进制 FWT 然后快速幂就行了,发现模 \(998244353\) 意义下 \(7\) 次单位根存在,所以这个非常好做。
https://codeforces.com/gym/102978/submission/129980678
H. Harsh Comments
用期望的线性性拆开,答案为每个 \(B\) 再所有 \(A\) 后面的概率之和。这就是个猎人杀,而且可以直接背包而不用分治 FFT。
https://codeforces.com/gym/102978/submission/110948025