NOI2023补题

发布时间 2023-07-31 18:57:51作者: shihoghmean

D1T1

前置知识:扫描线

首先问题是所有线的并集大小,我们可以想到相交的两条线是可以合并的,在合并之后,第一种线和第二种线可以直接用扫描线求并集。

而第三种线最多只有 \(5\) 条,我们先将第三种线的大小全部加到答案上,然后直接枚举第一种和第二种线与这 \(5\) 条线求交点,直接减去就行,注意可能三种线交于一点,直接用 \(map\) 维护这个电是否被统计过就行,\(ez\)

D2T2

很好的题(指打了 \(4\) 个板子)。

前置知识:主席树(也许不用)、后缀数组、manacher 算法、树状数组

先进行一个很典的操作,先在原串后面加一个隔离点,再将原串翻转然后接到后面,即得到了新的串 \(s\)
(\(s_{ n+1-i } = s_{n+1+i}\) \(i \in \left[ 1,n\right]\)),$i \in \left [ n+2,n*n+1 \right] $ 的后缀即是原串对应位置翻转后得到的后缀。 。

然后算出后缀数组,那么我们知道了每个后缀的排名。