摘要:
P3121 [USACO15FEB]Censoring G AC 自动机 多模式串匹配问题。 首先我们对所有模式串建立一个 ACAM 。 然后我们把文本串放上去匹配,当我们匹配到一个带标记的点的时候,说明我们目前出现了一个串,那么检查当前是否可以匹配完全,可以的话我们会直接相当于现在说明都没有匹配, 阅读全文
摘要:
P3285 [SCOI2014]方伯伯的OJ 大概是需要两个平衡树来维护,一个是按排名为序,一个是按照在第一个树内的编号为序。 动态开点平衡树? 似乎和 P3960 [NOIP2017 提高组] 列队 很像? 阅读全文
摘要:
作用 李超树是拿来维护线段或者直线,支持动态插入线段/直线,和询问在某一单点的最大值线段。 其实就是维护了一个动态凸包。 实际上就是维护了一个“最优势线段”和“标记永久化”。 常常用来维护斜率优化 dp 。 实现 插入直线 首先是插入直线,查询单点的实现: 要记住的地方: \(1.\) \(Modi 阅读全文
摘要:
P3648 [APIO2014]序列分割 首先,我们发现这个数据范围明显就是 \(O(nk)\) 的。 那么我们可以考虑直接 dp 了,设 \(dp[i][j]\) 为前 \(i\) 个数划分完毕,划分了 \(j\) 次,最后一次划分在 \(i\) 位置的最大贡献。 那么我们的柿子很明显就是 \(d 阅读全文
摘要:
P3628 [APIO2010]特别行动队 首先发现这个是划分区间,可以考虑 dp。 然后这个区间求和很明显可以做一遍前缀和。 接下来很明显就是一个斜率优化dp了。 可以动态开点李超树,也可以单调队列优化。 代码: #include<bits/stdc++.h> using namespace st 阅读全文
摘要:
P2900 [USACO08MAR]Land Acquisition G 斜率优化 dp 。 首先,我们可以发现这个题可以贪心:对于一个长度和宽度都小于等于另外一个地的地,我们可以直接划分到另外那一个去,直接把当前这个忽略即可。 然后我们可以发现这个求一个最大值可以直接写成一个 dp 。 设按$h$ 阅读全文
摘要:
CF786B Legacy 线段树优化建图板子题。 首先对于题目的三种连边方式,我们可以通过三种办法来分别维护。 点点连边直接 Addedge 即可。 点->区间 连边可以建立一棵线段树,这个线段树代表区间和普通的一样,只不过在建树的时候连接两条边权为 0 的边到左右区间即可。 区间->点 连边可以 阅读全文
摘要:
CF877E Danil and a Part-time Job 树剖然后线段树维护即可,维护取反操作本质就是交换 01 的个数即可。 代码: #include<bits/stdc++.h> using namespace std; template <typename T> inline void 阅读全文
摘要:
CF915E Physical Education Lessons 动态开点线段树和询问区间 sum 板子题,没有什么好说的,注意动态开点线段树的空间问题即可。 代码: #include <bits/stdc++.h> using namespace std; #define getchar()(p 阅读全文