NOI 2023 简易题解
P9478 [NOI2023] 方格染色
离散化成左开右闭,使用扫描线与线段树或树状数组计算横竖线的并后,暴力枚举斜线与其他线,用 map 去重交点计算并。
时间复杂度
P9479 [NOI2023] 桂花树
注意到第一个条件等价于
设
直接 dp 复杂度
P9480 [NOI2023] 深搜
咕。
P9481 [NOI2023] 贸易
最短路可以拆成
用 dijk 处理出每个点它的任意一个祖先到它的距离后统计答案。
时间复杂度
P9482 [NOI2023] 字符串
我们把每个前缀与后缀排序,发现相当于算一个区间内的前缀字典序大于当前后缀的前缀个数再减去不能在当前区间里分出胜负的字典序大于当前后缀的前缀个数。
后者的出现代表着偶回文串的出现,分析一下字典序关系大小的本质是第一个不一样的字符比较大小,所以我们只需要对最多
所以整个题可以用 SA+树状数组 在
P9483 [NOI2023] 合并书本
该做法来自 @zhoukangyang
建出操作树,按照子树重量和进行链剖分,观察到重量大的一定深度也大,否则可以调整使得答案不劣。接着我们发现可以将链缩成点,因为记录链上合并子树的顺序是不必要的。
接下来新树能对应一棵原树的条件是一个
考虑从上往下一层层做,我们显然只关心每层的 deg 集合。感受一下,先钦定一下每儿子度数都取到上界,然后我们每次选度数最大的点将其度数减
然后直接搜就行了。