这个月都在颓没做什么题()
P6477 [NOI Online #2 提高组] 子序列问题
枚举 \(r\),每次计算出 \(\sum\limits_{l=1}^{r} f(l,r)^2\)。
考虑使用线段树维护对于每个 \(l \in [1,n]\),\(f(l,r)^2\),设这个值为 \(v_i\)。
用 \(lst_i\) 表示上一个 \(a_i\) 出现的位置,没有为0。
当 \(r\) 往后移一位时,会对所有的 \(v_{i,i \in [lst_{r+1}+1,r+1]}\) 产生 \(1\) 的贡献。
可以用一个支持区间加 \(1\),区间查平方和和线段树维护。
P3411 序列变换
有一个比较明显的是一个数最多移动一次。
然后可以选一个子序列里面的不动,其它的动,要求最长的这个子序列。
这个子序列必须单调不减,而且它在答案序列里必须是连续的(毕竟不能让一个数插进去)。
做法就是用一个双向队列动态维护这个子序列里所有的i。从小到大从后往前插数,然后把后面的比它
小的都弹出去,如果有一个数字不是全都在子序列里的,就把比它小的数都弹了。
P3402 可持久化并查集
lkrkerry君说过,没有强制在线的可持久化题都不是真的可持久化。
把 \(m\) 个操作看成 \(m\) 个点,每个点向它上一个版本连一条边,可以组成一个树。
从 \(1\) 点开始遍历,用一个可撤销并查集维护合并、查询还有回溯上去的撤销,就可以了。
P9118 [春季测试 2023] 幂次
\(k = 1\) 直接输出 \(n\) 就行了。
\(k \ge 3\) 就直接暴力筛,因为 \(\sqrt[3]{10^{18}} = 10^6\)。
\(k = 2\) 答案就加 $\left \lfloor \sqrt{n} \right \rfloor $,然后筛 \(k \ge 3\) 判断是不是平方数就得了。