2022.11.22 模拟赛小结

更好的阅读体验戳此进入

赛时思路

T1

给定序列区间查询区间内是否所有数字各不相同。

n,q5×105

看完题就想到莫队了。。然后发现数据范围刚好卡莫队,根号过不去,不过一下子还是没想出来线段树写法,糊完莫队写完后面的回来对拍发现莫队寄了,调了十多分钟没调出来,又想了一下然后突然想到线段树怎么写了。

记录每个点的值上一次出现的位置,挂到线段树上,区间查询最大值,如果最大值小于 l 一定合法,反之不合法。

Code

T2

给定序列 an,求其中长度为 k 的上升子序列个数。

DP 比较好想,然后居然没想到用树状数组或者线段树优化。。最后加上一些玄学剪枝,最坏复杂度 O(n2k),显然过不了,最后只拿了 40pts,题本身挺水的,没写过我这确实很 sb。

Code

T3

坐标系中从 (0,0)(n,m),每次只能向右或向上,同时存在 k 个障碍,求到达终点的方案数。

容斥 + exCRT + exLucas,奇怪题,暴力分和性质分拿到了,容斥部分想到了一大半吧,最后用 DP 容斥转移过程没想出来,最终也只拿了 40pts,寄。

Code

T4

对树染色,要求相邻两点颜色不同,每个节点有一个序列表示可能被染的颜色,颜色共有 k 种,求合法染色方案数。

很 sb 的树形 DP,做过好几次类似题了,居然只糊了一个 O(n2k) 的 DP,然后没对拍,还似乎写挂了,直接爆零。

稍微动点脑子基本就能想到不用 O(n2k) 枚举,直接加上所有的减去颜色相同的即可 O(1)。。。

Code

正解

T2

O(n2k) 的 DP 十分显然,用树状数组优化一下转移即可。

Code

T3

先把前面题补一补然后刷刷 exLucas 之类的再补这道题吧。。

Code

T4

树形 DP,设 dp(i,j) 表示染完 i 子树,其根节点颜色为 j 的合法方案数,转移很显然,加上所有颜色和减去不合法的然后把所有子树乘起来即可。

Code

UPD

update-2022_11_22 初稿