2024.12做题记录

这个月都在颓没做什么题()

洛谷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\),区间查平方和和线段树维护。

洛谷3411 序列变换
有一个比较明显的是一个数最多移动一次。
然后可以选一个子序列里面的不动,其它的动,要求最长的这个子序列。
这个子序列必须单调不减,而且它在答案序列里必须是连续的(毕竟不能让一个数插进去)。
做法就是用一个双向队列动态维护这个子序列里所有的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\) 判断是不是平方数就得了。

posted @ 2025-01-05 22:52  天域_awa  阅读(19)  评论(0)    收藏  举报