【不定期更新】OI中的一些思路、结论及例题

这篇博客详细探讨了算法竞赛中的一些核心思路,包括图论、双指针维护、根号算法、动态规划、网络流、树相关问题、笛卡尔树等,并提供了丰富的例题解析,旨在帮助读者深入理解和应用这些算法技巧。
摘要由CSDN通过智能技术生成

1、图论相关:

(1)简化问题思路:
在这里插入图片描述

P7323 [WC2021] 括号路径(3点)
CF1503F Balance the Cards(3点合并)

如链上的二分查找对应树上的点分治
CF566C Logistical Questions

(2)查看一个点是否在一条路径上:须满足该点到路径两端点的距离和等于两端点的距离(充要)
P3398 仓鼠找 sugar
CF1083C Max Mex

一个类似的在一般图中的充要条件:求 S→T 的最短路可行边:分别以 S/T 为起点,跑最短路得到dist1,dist2 ,如果两端 dist 之和加上边的长度为最短路,则当前边出现在一条最短路中。(用在最短路有很多条的时候)
P7669 [JOI2018] Commuter Pass

(3)单源最短路径构成一棵树,称为最短路树。
P5201 [USACO19JAN]Shortcut G

(4)差分约束最短路行不通跑最长路
P6145 [USACO20FEB]Timeline G

(5)常见思路:几个点两点距离之和<->算每条边的经过次数(个体贡献)
P3177 [HAOI2015] 树上染色

(6)拆边为点
P2387 [NOI2014] 魔法森林

2、维护双指针更新答案

CF1641D Two Arrays
CF1630B Range and Partition
CF1418F Equal Product

3、根号算法相关

(1)根号分治:两个极端情况分别有一个复杂度优的算法,平衡点在根号位置上
P5443 [APIO2019]桥梁(询问分块)
KK1736 余数世界3
P5901 [IOI2009] regions
P3591 [POI2015] ODW
P5071 [Ynoi2015] 此时此刻的光辉

遇到周期性的东西,想到根号分治
CF1580C Train Maintenance

有一种特殊的周期性——等差数列相关问题
等差数列修改(根号做法:根号分治,分块,莫队)
P5313 [Ynoi2011] WBLT
P5309 [Ynoi2011] 初始化

另一类问题利用等差数列性质:%d相同;极差与区间长度的关系
P5278 算术天才⑨与等差数列
CF407E k-d-sequence

(2)修、查复杂度权衡
(例子:莫队O(n根号m)单点修,O(m)查询,适合套用分块数据结构(O(1)修,O(根号n)查),而不是BIT等(修、查都有log))
P4396 [AHOI2013]作业
BZOJ 4241 历史研究
P7983 [JRKSJ R3] practiceZ

(3)bitset套莫队
P4688 [Ynoi2016] 掉进兔子洞(为了用bitset,相同的数x共出现z次,用z位来填充,一个数出现i次,从它所对应的位置开始填i位1,z-i位0)
P5355 [Ynoi2017] 由乃的玉米田

(4)对于带区间染色操作的分块题,可以序列分块,然后对每个块特判其是否为同色块,在这个基础上再用颜色段均摊。
P7983 [JRKSJ R3] practiceZ

(5)整块当作全局操作,可以均摊,剩下零散块重构问题
CF896E Welcome home, Chtholly<

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值