11 2024 档案
摘要:没有固定解法,主要是积累思路 Sergey's problem 先弱化,考虑DAG,发现直接贪心可以做到只走一步 考虑有环图,DAG的做法会出现选点集有连边,探究选点集的关系,发现 一定有 先于 选取,存在偏序关系,则选点集会形成DAG 这就变成了弱化问题,再做一遍
阅读全文
摘要:交互题是通过程序与交互库进行交互,来解决问题的题型,大体上分为3类: 1、假的交互,把从文件读入数据变成从交互库读入 2、IO交互, 3、看不到输入数据,只能通过有限次调用交互库的函数,来找到数据的性质并解决问题(有点像猜谜 linux环境下交互题编译 采用双编译:g++ -o prog.exe p
阅读全文
摘要:常用于图论计数 Matrix-Tree定理 BEST定理 LGV引理 P7736 [NOI2021] 路径交点 说是LGV引理的模板 LGV引理 DAG上,从长度为 的集合 到 的不交路径数,发现和LGV很像(注意这里的不交是指不过同一结点) 又看到“偶数个交点的方案数-奇数
阅读全文
摘要:平面向量 凸包 旋转卡壳 半平面交 半平面:一条直线分开一个平面成两半,其中一半就是半平面 算法:按辐角大小排序,插入半平面是用双端队列维护 O2会有精度误差,真的奇怪 随机增量法 最小圆覆盖 题目 P2603 [ZJOI2008] 无序运动 发现相同的轨迹可以用相邻两向量的旋转角
阅读全文
摘要:如题,这是数学推式子中很重要的思想 容斥 常规容斥 常用容斥统计方法为:设 两组相反的概念(一定选--可以选,全部合法--钦定不合法等),有: \[g(S)=\sum_{T\subseteq S}f(T)\iff f(S)=\sum_{T\subseteq S}(-1)^{|
阅读全文
摘要:注意事项 关于spj 具体格式在说明书里 注意自定义比较器为.exe文件,路径是从\data开始的(如b题的spj为b\spj_cpp.exe) 交互 交互库为.h文件,实现接口为grader.cpp,有一些把grader.cpp的内容写进.h文件的,创建一个空的grader.cpp一起双编译即可
阅读全文
摘要:P6772 [NOI2020] 美食家 很简单的一道题,但是实现的时候需要一些优化 我最初的想法是,压入今后 天的状态,然后矩乘转移,对于不同美食节,断开特判即可 写的时候非常sb地把活动前 天的转移矩阵拿出来修改,后面发现只需要活动结束后改 即可 时间复杂度\(O(k(
阅读全文
摘要:静态维护凸包 动态维护凸包 Splay平衡树 维护每个点向左、向右的线段的斜率 (初始为 和 方便插入) 插入一个点时,先加入Splay,再向左右找到最接近的,可与新点形成新的凸包的点,把中间点删掉,更新 即可 具体实现:code cdq分治
阅读全文
摘要:P3813 [FJOI2017]矩阵填数 常见思路:最大值为 方案数 最大值 的方案数 最大值 的方案数 但是在这里有多个矩形,直接做会有问题,因为非法方案应该是存在一个矩形最大值 ,看 的范围想到容斥 上公式:\(\display
阅读全文
摘要:背包k优解 题目链接 类似次短路算法,记录前 优解,转移即可 由于一个状态只会有 个来源( ),问题变成了两个单调序列的前 大问题,直接不断取队头比较即可 时间复杂度 ,我是直接暴力排序+卡常过的(别用 ,好慢) 练习 #6
阅读全文
摘要:KMP AC自动机 用于解决多模式串匹配的状态机,本质上为 在 上匹配,失配时,利用 的思想,尝试跳到能匹配的最长后缀,这样可以尽可能使其产生贡献 使用失配数组 记录该最长后缀的对应节点 失配指针 性质1: 最长后缀为\(f
阅读全文
摘要:后缀排序 即对字符串 的所有后缀根据字典序排序 实现 算法1:暴力排序 直接 比较,时间复杂度 算法2:倍增优化 我们考虑长为 的串的比较,该串可以分为前后均长 的串,那么只要知道这两个串的排名,就可以对所有\(2
阅读全文
摘要:快读 & 快写 快读 常用型: inline int read() { int x=0,op=1; char ch=getchar(); while(ch<'0'||ch>'9') { if(ch=='-') op=-1; ch=getchar(); } while(ch>='0'&&ch<='9'
阅读全文
摘要:E - Mod Sigma Problem 技巧:拆模数( ) \(\displaystyle S_{l,r}=(S_r-S_{l-1})\%M=S_r-S_{l-1}+\begin{cases}0, \ \ \ \ \ \ S_r\ge S_{l-1}\M, \ \
阅读全文
摘要:前置知识:Splay和文艺平衡树 介绍 Link Cut Tree,简称LCT, 时间复杂度分析 细节 原splay函数 Rotate()中,注意son[z][]的赋值要有限制语句isroot(y),因为z可能是“认父亲不认儿子”的splay根节点的父亲(Splay()中的限制管不到,因为Splay
阅读全文
摘要:前置知识:点双连通分量 定义 圆方树:对于一个点双内的点,拆除点之间所有相连的边,并和一个代表该点双的点连边 圆点为原图中的点,方点代表一个点双 圆方树有狭义和广义两种 狭义圆方树不把“杠铃形”当作点双,有圆圆边 广义圆方树把“杠铃形”当作点双,只有圆方边 狭义圆方树是解决仙人掌问题的利器,详见li
阅读全文
摘要:欧拉路径 代码 细节较多 link 欧拉回路 中国邮递员问题 求从点 出发,遍历所有边,最后回到 的最短路线 考虑回路的性质:每个点的度都为偶数 那么只需要求将奇度点两两配对的最小代价即可 (算法? P6628 [省选联考 2020 B 卷] 丁香之路 把起点和终点连一条边,则转化为
阅读全文
摘要:网络最大流 EK Dinic+当前弧+剪枝 Dinic:BFS分层,每次只向下一层流 当前弧:流完的边删掉 剪枝:流完的点删掉 细节 加反边时反边容量为0,价值取反,不要搞混了(已经搞错3次了) 剪枝优化尽量不用,如果一定要用的话,注意
阅读全文
摘要:轮廓线 球盒模型 题目 【3.14省选测试】计数 仔细分析发现一定至少有一个方向的箭头被另一个截断,形成两个凸包 用两条轮廓线描述凸包,发现可以转化为球盒模型,直接上就行了 然而会有特殊情况:凸包顶到同一行,但是错开(类似对勾函数),特殊处理即可,注意对顶的情况会算重 Group Projects
阅读全文
摘要:种类并查集 P2024 [NOI2001] 食物链 类似于超级源点,把 丢进集合里,相当于 对这个集合作了标记,方便维护 细节 注意 ,对于 ,会有 这里会出现自己和自己连边的情况,用 的写法需要特判
阅读全文
摘要:Splay 技巧/记忆点: 1、Rotate()中,使用变量记录位置关系和下标; 2、Find()(找元素 所在位置)减少重复代码; 3、求前驱/后继时先把这个数插进去再删掉; 4、Splay()父子同侧先翻父亲,再翻儿子,否则翻两边儿子; 5、siz[]在Splay()前先Pushup()
阅读全文
摘要:类似于单调队列优化,根据转移方程的性质选择合适的优化方案 线段树 应用场景:方程转移为一个区间且无单调性 [ARC085F] NRE 先按左端点排序,考虑前 个区间对答案的贡献,很容易写出 的方程 考虑到只会有两类转移点: 或\(l[i]\le r[
阅读全文
摘要:7574 -- 【6.05模拟】数据结构 分块 二次离线回滚莫队 cdq分治+扫描线 题目限制太多,考虑先消去 的限制,很容易想到将点分成 和 两部分,此时上下两部分可以分开统计最大值 但是如果直接将询问扔进去又会变成 的,考虑这
阅读全文
摘要:强连通分量 细节 对于多点跑tarjan来说,可能会有先访问 中的 ,这导致 ,后面 跑tarjan时会误把 当成祖先,要加判断 割点 & 割边 删去后使图不连通的点/边 找割边和强连通分量求法大差不差,这里不再赘述 找割点不
阅读全文
摘要:多项式的表示 系数表示法 即 点值表示法 一个 次多项式可以被 个点唯一确定 可以用这 个点表示该多项式 多项式卷积 \[(f*g)(x)=\sum_{i=0}^{n}\sum^n_{j=0}a_ib_
阅读全文
摘要: 枚举子集 状压DP中相当重要的技巧(虽然后位有FWT,FMT替代,但不是都能代) for(int i = x; i; i = (i - 1) & x) { // i 就是 x 的子集 } 题目 P6622 [省选联考 2020 A/B 卷] 信号传递 看数据范围,\(m \le 23\
阅读全文
摘要:点分治 思想 回想序列分治的做法:递归统计两个区间,在统计跨两个区间的贡献 对应到树上也类似:找一个分割点,统计子树的贡献,再统计跨子树的贡献 由于路径都可以被某一级重心统计到,所以点分治长于做路径统计问题 找树的中心 树的中心:以它为根时的最大子树最小的点 处理方式:开全局变量
阅读全文
摘要:求区间第k小值 静态 分块 排序 划分树 动态 主席树 平衡树 子树求交 树上颜色问题 统计颜色数量 对于子树 ,子树内同种颜色的点只有深度最浅的对子树外有贡献 #3628. 「2021 集训队互测」树上的孤独 贡献上传:对于 ,设它同颜色祖先为 ,则 对路径\(p\
阅读全文
摘要:二分图染色判定 二分图最大匹配 性质 匹配必须点:即所有最大匹配中都匹配的点(删除该点最大匹配数有变) 非匹配必须点:同理 关于必须点与非必须点的性质: 1、与非必须点相连的点一定是必须点 易证,若为非必须点,则这两点可以相配,不符合最大匹配定义 2、未匹配点一定是非必须点 通过DFS可以在已知最大
阅读全文
摘要:在二维动态规划中,往往会有两个维度上的限制,此时,可以通过加维、换状态、改变枚举顺序来实现消除这两个维度的限制,但有时,往往需要分析 [P5664] Emiya 家今天的饭 分析题目,易知烹饪方法可以通过顺序枚举取消后效性,而主要食材加维、换序都不行,考虑别的道路 反向考虑,容斥原理 当正向思路受到
阅读全文