[模拟]20220324
没睡好,晕……
不是第一次模拟前一晚没睡好了,我可能是缺心眼
T1
一个送分的构造,但凡再多想一点就随便切了……
长度为 \(3\) 的链没啥性质,但是沿着特殊的树比如二叉树就能想到毛毛虫那样的结构,然后发现树高太高没用,应该树高不超 \(4\),就直接根上挂几个长分别是 \(1,2,3\) 的链就行。
而且构造方式远远不止上面一种。
赛时没想到非常的亏。
T2
看到 \(\operatorname{lcp}\) 首先写一个 SA,然后写一个 st 表,感觉应该不是 SAM,结果有人写 SAM 就过了,所以 parent 树性质真的很好,应该多往这方面想想。
感觉今年省选要出字符串
反复观察发现 \(\operatorname{lcp}\) 没啥好性质,但是看到 \(k \in [0,1],\sum k = 1\) 这个限制条件能感觉到这个题偏数学,没有深究,\(\max\) 函数没法求偏导数,没办法牛顿迭代或者拉格朗日乘子法,可以的话似乎是一个 \(n^2 \log n\),可以得个部分分。
赛后发现暴力分可以高斯消元,思路其实挺明晰的。
正解是对 \(height\) 数组分治,实在没有往这个方向想……
重点就是考虑在无法直接最优化的时候首先想一下单点是如何贡献的,类似在 DP 计数的时候首先想如何判断合法。
T3
子序列,排除后缀数组,后缀自动机。
于是写了一个子序列自动机上 DP,每个询问只能暴力重构,复杂度 \(\mathcal{O} (nmq)\),和暴力 DP 一个复杂度,令人悲伤。
后来一直在想怎么整一个数据结构把调换后的子序列自动机结构做出来,然后发现不太行。
然后看数据范围有一个 \(n,q\) 大 \(m\) 小的,有点奇妙,考虑了一下字符集大小的影响但是没有结果,到最后也没想 DP,一直在套数据结构。
总之就是大胆去设计状态,其实部分分也比较好得,这个矩阵的思维就很想动态 DP,但是没怎么做过序列上动态 DP 的题,出树上问题又比较像纯套板子,没有去主动想矩阵乘法转移。
总结
一上午三个题时间还是很充裕的,应该对有信心切的题专注一点,暴力没法改进的题先放一放。