0
点赞
收藏
分享

微信扫一扫

近期刷题总结[2019 03 09]

unadlib 2022-08-16 阅读 37


目录

​​寻找段落 [分数规划+单调队列]​​

​​P4319 变化的道路 [LCT + 线段树分治]​​

​​P2485 [SDOI2011]计算器 [exgcd, bsgs] [模板]​​

​​P4458 [BJOI2018]链上二次求和 [线段树][二次前缀和]​​

​​严格次小生成树 [最小生成树+倍增]​​

​​P2120 [ZJOI2007]仓库建设 [斜率优化板子]​​

​​P2155 [SDOI2008]沙拉公主的困惑 [推式子]​​

​​P4559 [JSOI2018]列队 [主席树]​​

​​P4139 上帝与集合的正确用法 [扩展欧拉定理]​​

​​[SCOI2015]国旗计划 [倍增]​​

​​[SCOI2015]小凸玩矩阵 [二分+网络流] [算网络流模板吧]​​

​​P3165 [CQOI2014]排序机械臂 [Splay]​​

​​[BJOI2014]大融合 [树剖 / 线段树分治+并查集 / LCT]​​

​​[BJOI2012]算不出的等式 [直接打表]​​

​​[BJOI2012]最多的方案 [DP]​​

​​[BJOI2012]连连看 [费用流板子吧]​​

​​寻找段落​​ [分数规划+单调队列]

首先二分一个mid, 找是否存在长度为l--r之间的一段使  

\sum a[i]-mid>=0

转化为前缀和来看就可以单调队列维护了

 

​​P4319 变化的道路​​ [LCT + 线段树分治]

对于每个道路出现的时间li, ri, 插入线段树的这个区间,  然后就是线段树分治

这里补充一下, 就是先将根中有的做一遍, 然后递归左右儿子(这是根上面的信息还在)

最后清除该子树的信息(因为递归它父亲的另一个儿子不能有它的信息) , 然后就是LCT 动态维护最小生成树

 

​​P2485 [SDOI2011]计算器​​ [exgcd, bsgs] [模板]

复习一下bsgs, 找  

近期刷题总结[2019 03 09]_线段树_02

  相当于是  

近期刷题总结[2019 03 09]_线段树_03

 也就是 

近期刷题总结[2019 03 09]_分治_04

然后m取sqrt(p), 将b^j插入map, 枚举i就可以了

 

​​P4458 [BJOI2018]链上二次求和​​ [线段树][二次前缀和]

首先将询问改为前缀和模式, 对前缀和再求一个前缀和

然后考虑修改对哪些有影响, 要讨论 l<=i<=r, 和i>r两种情况讨论


​​严格次小生成树​​ [最小生成树+倍增]

先求最小生成树, 然后枚举没在树上的边, 用它去替换环上的最大, 因为是严格次小, 所以要维护最大和次大

不带修就倍增解决

 

​​P2120 [ZJOI2007]仓库建设​​ [斜率优化板子]

 

​​P2155 [SDOI2008]沙拉公主的困惑​​ [推式子]

非常巧妙啊

 

近期刷题总结[2019 03 09]_分治_05

因为   

近期刷题总结[2019 03 09]_分治_06

, 而n! 可以分为 n! / m! 段所以  

近期刷题总结[2019 03 09]_分治_07

预处理后面那个就可以了, n!, 及逆元就可以了

 

​​P4559 [JSOI2018]列队​​ [主席树]

很明显有一个界点, 前面的到界点前, 贡献是l -- 界点的和 - 界点前的位置之和, 后面就反过来

因为询问原序列的l-r, 需要将l-r的区间搞出来, 所以就主席树了

 

​​P4139 上帝与集合的正确用法​​ [扩展欧拉定理]

令 

近期刷题总结[2019 03 09]_分治_08

, 然后递归求解

 

​​[SCOI2015]国旗计划​​ [倍增]

倍增的思想巧妙啊, 预处理往后跳2^i个最远跳到多少就可以了

 

​​[SCOI2015]小凸玩矩阵​​ [二分+网络流] [算网络流模板吧]

 

​​P3165 [CQOI2014]排序机械臂​​ [Splay]

我们可以先排序, 然后将哪个点splay到根, 有儿子的siz就是第几个

然后就是splay区间翻转了

 

​​[BJOI2014]大融合​​ [树剖 / 线段树分治+并查集 / LCT]

树剖: 先离线, 然后每次删一条边, 子树就没了, 就是子树修改, 然后每次跳到最近的断的地方fa, 答案就是siz * (fa-siz)

LCT : LCT 维护子树大小, 可以用Splay维护实链大小, siz维护虚边的大小, access时更新(虽然我不会)

线段树分治+并查集 : 考虑暴力, 每次询问可以将前面所有的重新插入并查集(除了那条边), 发现每一条都有一个出现时间的范围, 然后就是线段树分治

 

​​[BJOI2012]算不出的等式​​ [直接打表]

 

​​[BJOI2012]最多的方案​​ [DP]

既然我们不能直接背包, 那能不能先找到一种分解, 然后来换呢, 十分巧妙

近期刷题总结[2019 03 09]_线段树_09

 

​​[BJOI2012]连连看​​ [费用流板子吧]

举报

相关推荐

0 条评论