近期刷题总结[2019 03 09]

目录

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

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, 找  a^x\equiv b(mod p)  相当于是  a^{im-j}\equiv b(mod p) 也就是 a^{im}\equiv b^j(mod p)

然后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]沙拉公主的困惑 [推式子]

非常巧妙啊

 ans=\sum_{i=1}^{n!}[gcd(i,m!)=1]

因为   gcd(i,m!) = gcd(i+m!,m!), 而n! 可以分为 n! / m! 段

所以  ans = \frac{n!}{m!}*\varphi(m!) = \frac{n!}{m!}\prod_{pi|m!} \frac{pi-1}{pi}=n!\prod_{pi|m!} \frac{pi-1}{pi}

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

 

P4559 [JSOI2018]列队 [主席树]

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

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

 

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

令 f(p)=2^{2^2}(modp) \equiv 2 ^ {f[\varphi(p)]+\varphi(p)}(modp), 然后递归求解

 

[SCOI2015]国旗计划 [倍增]

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

 

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

 

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

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

然后就是splay区间翻转了

 

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

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

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

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

 

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

 

[BJOI2012]最多的方案 [DP]

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

 

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FSYo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值