鱼C论坛

 找回密码
 立即注册
查看: 269|回复: 8

[心之碎片II] - OI思想/技巧/套路 (持续更新)

[复制链接]
回帖奖励 12 鱼币 回复本帖可获得 3 鱼币奖励! 每人限 1 次
发表于 2024-10-2 12:56:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 柿子饼同学 于 2024-10-4 17:05 编辑

主要是在 NFLS 集训的时候总结出来的经验...

注意题目限制寻找突破口, 看看去掉什么条件就不可做了
注意普遍性, 例如标序号不要想当然就标大小
思考做东西的本质是在干嘛, 换一种视角
正难则反
考虑贡献
总的减去不符合的
先解决降维后的问题
数据结构维护前缀和要提前加一个 0, 不然 1 是取不到的
打表
ll = 1ll * int * int
多测不清空, 亲人两行泪
拆贡献

区间, 序列问题应该想到
前缀和, 差分
尺取
值对应下标
枚举右端点, 找左端点

时间倒流 & 正难则反 & 离线!!!
把删除变成伪删除, 时间倒流变成插入

树边定向
对于一个点的权值会流到别的点等等的题要想到无向边转有向边
f(i, j, k) 表示 i 这个点和 j 个点连通, k 个在 i 的子树里的最大值
P9111 [福建省队集训2019] 最大权独立集问题

前缀和 & 差分
区间, 序列, 等差数列等等问题要想到差分
差分也可以用于整体回答答案, 例如 P4211 [LNOI2014] LCA 和 数位dp 等等场合
树上差分
放宽题目限制来做, 然后容斥或者别的去掉不合法的答案

二分
二分答案可以用于具有单调性的问题
把求答案转换为判定
平均数 (区间和 - mid > 0)
中位数 (中位数可以变成大于等于的是 1, 小于的是 -1, 做 sum)
配合数据结构发挥
求第 k 大的东西
转换为 01 序列

倍增
倍增优化时空, 一般是预处理的
需要满足区间可合并性
看到静态的, 很长的东西想到倍增
倍增矩阵优化
倍增 dp, 交换答案和状态后进一步优化空间
字符串倍增比较大小

启发式合并
并查集不能压缩的时候可以试试看
树上启发式合并可以解决一些静态统计问题, 可以预处理

可行性问题
二分
可行性dp
只需要判定是否可行, 少了很多限制, 考虑前缀 min/max/... 做

最小生成树
按照边权分类
建树然后加边

前 k 大
转化为求状态的后继状态, 发现 max 记录位置之后可以划分成两个不同的子状态
后继太多可以考虑手动安排一个顺序, 例如规定 T(a1) = a2, T(a2) = a3 ...
配合堆什么的处理

转化为 01 序列
一般配合二分

树剖
重链剖分应该维护一整个重链的总信息, 查询, 修改的时候 log 跳

走过的边不超过, 不小于...
要想 kruskal 重构树

树上
应该先判断是否连通...

树上问题先想低级算法 :
dfs栈 (把之前的祖先节点放进栈中, 双指针或者二分什么的)  
树上差分 (点上加东西, 在 lca 和 lca 父节点各自减去一个)
dfs做差 (递归进入子树之前先记录当前的答案, dfs回来之后再记录当前的答案, 这样两个相减就是子树答案了)
dfn + 差分, 把点加变成子树加, 设 s[x] 表示 x 到根的什么什么
树上倍增

树上问题的一些思考 :
按照 dfn 来二分判
lca单调性 (一个点是否是 lca 具有单调性 0000011111...)
善用 dfn 的有序性, 把无序变成有序, 把树上转换为序列
自己画图找性质
dfn 越近, lca深度越深
树上的函数 : lca, dist(点点距, 点链距), up(倍增向上跳), Insub(用 dfn 判断是否在子树中)
树上的路径分类: u 到 祖先, 祖先到 u
dep 就是 root 到 u 的 dis
随机树: 可以暴力跳 pa

字符串相关
先想哈希, 数据结构维护, 注意增量
循环节用 kmp
后缀数组, 后缀自动机

根号分治 & 要打部分分
看到总量 < 1e5 或者值域 n 要想到根号分治
暴力 + 大范围维护

在数据结构上求答案, 先记录原始的值然后更新叶子

区间dp
转移方式 : 两个区间合并, 枚举中间点然后加上过这个点的贡献, 从边界上增大区间
类似分治


评分

参与人数 1鱼币 +5 收起 理由
某一个“天” + 5 无条件支持楼主!

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-10-2 15:40:31 | 显示全部楼层

回帖奖励 +3 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-10-7 22:49:19 | 显示全部楼层

回帖奖励 +3 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-10-16 22:31:36 | 显示全部楼层

回帖奖励 +3 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-10-17 09:09:32 | 显示全部楼层

回帖奖励 +3 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-10-17 10:12:33 | 显示全部楼层

回帖奖励 +3 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-10-18 09:42:06 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-10-19 22:15:58 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-11-6 18:48:40 | 显示全部楼层

回帖奖励 +3 鱼币

新人学习中....
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-24 19:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表