P3199 HNOI2009 最小圈 题解

    题意:

    给 $n$($\le 10^6$)的排列 $a$,再给 $q$($\le 20$)个 $k$($\le 10^6$)。对于每个 $k$,求出 $a$ 的一个最长不下降子序列 $b$,使得 $\sum{\ln(b_i-b_{i-1}+k)}$ 最大。对每组询问都输出一个答案。

    首先显然有一种 $nq \log^2{n}$ 的 cdq 做法。但是题目...

    Read More

    CF1416D Graph and Queries 题解

    题意: 给定一个图,点有权值。有两种操作: 1. 询问从点 $u$ 出发能到达的点中,权值最大的点(并把该权值变为 0)。 2. 删掉图中的某条边。

    喵喵题

    倒着来做,变成加边和改点权。建立 kruskal 重构树,边权按照查询的顺序。那么每次询问相当于询问一个子树!因为一个加边相当于连接两棵树。

    似乎这种连通块相关的,有...

    Read More

    SA 总结

    已完成 $SA$ 大学习。

    $SA$,顾名思义,$Suffix \ Array$,就是后缀数组的意思。

    我们先来考虑一个问题。给定一个字符串,多次询问,要我们求出两个后缀的 $\operatorname{lcp}$(最长公共前缀)。

    先将字符串的每一个后缀全部插入一颗 $\operatorname{Trie}$ 树。可以发现询问就等价于询...

    Read More

    CF1048 总结

    A: 显然两个数最后都要变成它们的 lcm。

    B: 前 m - n 秒显然没用,最后 n 秒贪心抢蛋糕即可。

    C: 注意到操作一相当于 $x \to \frac{x}{2}$,操作二相当于 $x \to 2^k + \frac{x}{2}$。所以直接二进制分解一下就行。

    D: 如果 $\exists i, b_i > b_{i +...

    Read More
    View: User: