0824考试总结

某场考试总结

考完了一个月之后再来写总结也是没谁了。。。

考试

T1

简单题,随手构造出来就行。

可以加强,比如弄成质数个,或者干脆 \(10^{18}\) 个。

然而有个结论,考虑往一个字符串后添加 \(k\)\(0/1\),那么本质不同子序列个数一定可以写成 \(k(x-b)+x\) 的形式,其中 \(x\) 为该字符串的本质不同子序列个数,\(b\) 为上一个 \(0/1\) 前一个位置的答案。根据这个玩意来构造,不会太好做。

T2

发现本质不同子序列个数随 \(n\) 的增长近乎呈指数增长,猜想满足条件的不会太多,所以暴力处理即可。

实际上设 \(DP\) 状态,\(dp[i]\) 表示考虑到前 \(i\) 个字符,本质不同子串个数,有转移 \(dp[i]=2\times dp[i-1]-dp[lst[i]-1]\)\(lst\) 表示 \(i\) 处字符上一次出现的位置。

于是设 \(dp[i][j][k]\) 为考虑前 \(i\) 个字符,上一个 \(0\) 处本质不同子序列数量 \(j\),上一个 \(1\) 处本质不同子序列数量为 \(k\),枚举 \(0,1\),直接转移。

T3

我想的是折半之后爆搜,然后剪一下枝,比 \(std\)\(5\) 倍。

确实也是折半,但是其实可以考虑偏序关系,两个 \((x,y,z)\) 三元组合并,不妨要求 \(x_1+x_2\le y_1+y_2\le z_1+z_2\),然后值为 \(z_1+z_2-(x_1+x_2)\),本质上是个二维偏序。

还可以剪个枝,强制要求 \(x_1\le y_1\le z_1\)。同样能对应上去。

实际上还可以发现强制要求 \(z_2\le y_2\le x_2\) 也没有问题,证明比较繁琐,故省略。

T4

很妙的一道题,我想的是,需要将相同城市联系起来,考虑它们在虚树上的关系,每个点需要和它倾向的所有点连边,然后实际上只会连 \(O(n)\) 条边,连好之后 \(tarjan\) 求下 \(SCC\) 就行。

有一种非常神奇的做法,考虑点分治,暴力求分治中心的答案,然后考虑其它点,发现之后的所有点的答案都不会跨过分治中心,可以暴力计算。