时间安排
8:00–8:05 读题。T2求算法期望直接弃掉。
8:05–9:20 T1,分析一下性质。发现若保证任意排列答案相等与对角数有关且任意方阵可以拆成整数个排列,确定了对角线的数以及周遭的k个数,其他数都是已知的。然而对这玩意DP是个 100100100^{100}100100 的sb复杂度没有任何用。不过可以用来剪肢DFS,可以打表。n<=10 的点跑的飞快,不到1s就能跑出来,非常舒服。
9:20–9:50 T3,三进制状压。
9:50–12:00 T1,打表发现本质是在涂色。可以用组合数容斥计算,写了个 n2logn^2 logn2log 的玩意递推。
12:00–13:00 T1, n2logn^2 logn2log 太拉跨了,考虑能不能去掉 ∑\sum∑ 变成 O(1)O(1)O(1) ,推导一下内部变成 n2n^2n2 ,但是对 nnn 的递推上卡住了。
赛后:
T1的式子和正解式子基本一模一样。变 O(1)O(1)O(1) 的时候有个地方出错了,而且多枚举了一个没有任何用的 nnn 。把这个 ∑\sum∑ 去掉,做个前缀和就能A了。自闭了。
回顾&反思
T1: 推导有点太费力了。一个是做了一个没有任何用的递推,本质上是内外 ∑\sum∑ 没有处理好,把内外 ∑\sum∑ 调换一下就好做多了。然后是容斥的地方卡了好久,两个元素贡献的时候会出现本质相同的重复,我直接暴力枚举重复了多少次容斥,直接白白多了一个 ∑\sum∑ ,题解直接钦定其中一个元素不能造成这种贡献,这样容斥是简单的,就可以直接做了。
T2:
T3: 神仙构造。部分分有一个约 70pts 的差分约束做法,比赛的时候没有想到,这种区间和的形式都可以变成前缀和差分形式,就可以差分约束了。