目录
P2485 [SDOI2011]计算器 [exgcd, bsgs] [模板]
P4458 [BJOI2018]链上二次求和 [线段树][二次前缀和]
[SCOI2015]小凸玩矩阵 [二分+网络流] [算网络流模板吧]
[BJOI2014]大融合 [树剖 / 线段树分治+并查集 / LCT]
寻找段落 [分数规划+单调队列]
首先二分一个mid, 找是否存在长度为l--r之间的一段使
转化为前缀和来看就可以单调队列维护了
P4319 变化的道路 [LCT + 线段树分治]
对于每个道路出现的时间li, ri, 插入线段树的这个区间, 然后就是线段树分治
这里补充一下, 就是先将根中有的做一遍, 然后递归左右儿子(这是根上面的信息还在)
最后清除该子树的信息(因为递归它父亲的另一个儿子不能有它的信息) , 然后就是LCT 动态维护最小生成树
P2485 [SDOI2011]计算器 [exgcd, bsgs] [模板]
复习一下bsgs, 找 相当于是 也就是
然后m取sqrt(p), 将b^j插入map, 枚举i就可以了
P4458 [BJOI2018]链上二次求和 [线段树][二次前缀和]
首先将询问改为前缀和模式, 对前缀和再求一个前缀和
然后考虑修改对哪些有影响, 要讨论 l<=i<=r, 和i>r两种情况讨论
巨神博客https://blog.csdn.net/dreaming__ldx/article/details/85735495
严格次小生成树 [最小生成树+倍增]
先求最小生成树, 然后枚举没在树上的边, 用它去替换环上的最大, 因为是严格次小, 所以要维护最大和次大
不带修就倍增解决
P2120 [ZJOI2007]仓库建设 [斜率优化板子]
P2155 [SDOI2008]沙拉公主的困惑 [推式子]
非常巧妙啊
因为 , 而n! 可以分为 n! / m! 段
所以
预处理后面那个就可以了, n!, 及逆元就可以了
P4559 [JSOI2018]列队 [主席树]
很明显有一个界点, 前面的到界点前, 贡献是l -- 界点的和 - 界点前的位置之和, 后面就反过来
因为询问原序列的l-r, 需要将l-r的区间搞出来, 所以就主席树了
P4139 上帝与集合的正确用法 [扩展欧拉定理]
令 , 然后递归求解
[SCOI2015]国旗计划 [倍增]
倍增的思想巧妙啊, 预处理往后跳2^i个最远跳到多少就可以了
[SCOI2015]小凸玩矩阵 [二分+网络流] [算网络流模板吧]
P3165 [CQOI2014]排序机械臂 [Splay]
我们可以先排序, 然后将哪个点splay到根, 有儿子的siz就是第几个
然后就是splay区间翻转了
[BJOI2014]大融合 [树剖 / 线段树分治+并查集 / LCT]
树剖: 先离线, 然后每次删一条边, 子树就没了, 就是子树修改, 然后每次跳到最近的断的地方fa, 答案就是siz * (fa-siz)
LCT : LCT 维护子树大小, 可以用Splay维护实链大小, siz维护虚边的大小, access时更新(虽然我不会)
线段树分治+并查集 : 考虑暴力, 每次询问可以将前面所有的重新插入并查集(除了那条边), 发现每一条都有一个出现时间的范围, 然后就是线段树分治
[BJOI2012]算不出的等式 [直接打表]
[BJOI2012]最多的方案 [DP]
既然我们不能直接背包, 那能不能先找到一种分解, 然后来换呢, 十分巧妙