02 2024 档案

摘要:复杂DP 写在最前面的一些话。 DP 算是最常见的一种题目了,类型多样,很值得研究。 究其本质,DP 可以看做是在 DFA(有限状态自动机)上沿着转移边进行转移。考虑某种组合结构,所有满足某一条件的该结构作为元素组成一个解集,题意要求求出这些解的某种权值经过某种运算后的结果,DP 就是使得自动机在这 阅读全文 »
posted @ 2024-02-15 22:21 Xttttr 阅读(119) 评论(0) 推荐(1) 编辑
摘要:DP优化 一些典型或者不典型的 DP 优化实例。 CF354D Transferring Pyramid 题意:有一个 n 层的金字塔,现在能进行两种操作,一是给某个点染色,代价是 3,或者画一个底边是金字塔底边的子三角形,给每个点,代价是点数 +2,要求用最小代价覆盖所有要染色的 \(m\ 阅读全文 »
posted @ 2024-02-15 20:37 Xttttr 阅读(42) 评论(0) 推荐(0) 编辑
摘要:状压 DP 状压是一种把集合映射到数字的方法,通常是二进制状压,每一位的 01 表示集合是否含有这一项。状压可以大幅度减少与集合有关的 DP 写法上的复杂性,而且用上位运算相关的技巧还可以优化复杂度,是一种常见的方法。 一般的状压是往一个集合中加入或删除一个元素进行转移,也有枚举子集、超集进行转移, 阅读全文 »
posted @ 2024-02-15 18:00 Xttttr 阅读(24) 评论(0) 推荐(1) 编辑
摘要:容斥 基本公式 |i=1nai|=T[1,n]1|T|+1|iTai| min-max容斥 \(\max_{i\in S}a_i=\sum\limits_{ 阅读全文 »
posted @ 2024-02-15 15:46 Xttttr 阅读(22) 评论(0) 推荐(0) 编辑
摘要:贪心 贪心题合集,感觉不少都是结论题。 好吧其实不多 CF725F Family Photos 题意:有 n 对照片,Alice 和 Bob 轮流取,每一对照片只有取了第一张才能取第二张,如果连续两轮都不取就结束,每对照片对 Alice 和 Bod 的贡献分别是$ a_1,a_2,b_1,b 阅读全文 »
posted @ 2024-02-15 12:07 Xttttr 阅读(32) 评论(0) 推荐(0) 编辑
摘要:反悔贪心(模拟费用流) 贪心本身是不能反悔的,但如果当前最优解不是全局最优解,我们就需要通过反悔来贴近全局最优解。一般用堆来实现,即堆中维护当前可以用来反悔的决策,然后每次取最优的决策。 其实从更一般的角度,反悔贪心就是建出费用流模型,然后用数据结构来模拟增广的操作。 一些例题: CF280D k- 阅读全文 »
posted @ 2024-02-15 10:46 Xttttr 阅读(144) 评论(0) 推荐(0) 编辑
摘要:构造 感觉上很大一部分的构造题的构造过程可以画图,应该是一个不错的思考方向。 P8098 [USACO22JAN] Tests for Haybales G 题意:有一个长为 n 的不降的整数数组和一个整数 k,你不知道这个数组和这个整数,但你知道对于每个下标 i 满足 \( 阅读全文 »
posted @ 2024-02-15 10:14 Xttttr 阅读(76) 评论(0) 推荐(0) 编辑
摘要:图论 一些图论建模和纯图论题。 首先是一些基础的 bfs,dfs,生成树。 常见的模型有最短路,分层图,欧拉回路,二分图,差分约束,同余最短路,图染色等,需要灵活转化。 P5100 [JOI 2017 Final] 足球 思路:大概方向是容易想到的,就是拆点跑最短路。 比较简单的方法是建 3 层点, 阅读全文 »
posted @ 2024-02-14 21:56 Xttttr 阅读(95) 评论(0) 推荐(1) 编辑
摘要:字符串进阶 一些不那么裸的字符串题,甚至出现了 parent 树优化建图这种离谱的东西。 前置知识:kmp,字符串哈希,AC 自动机,SA,SAM,Manacher CF914F Substrings in a String 题意:给定字符串,要求支持单点修改,询问时给出字符串,求在 \([l,r] 阅读全文 »
posted @ 2024-02-14 21:36 Xttttr 阅读(55) 评论(0) 推荐(0) 编辑
摘要:复杂数据结构 一些巨大的数据结构题目 CF1336F Journey 题意:给定一棵树和 m 条链,求多少对链的交中包含的边 k。 思路:首先对链交的情况进行分类。 第一种是 lca(x1,y1)lca(x2,y2),我们在深度较大的 \( 阅读全文 »
posted @ 2024-02-14 17:36 Xttttr 阅读(35) 评论(0) 推荐(0) 编辑
摘要:KTT 学习笔记 KTT 是由 EI 给出的解决区间加正数、区间最大子段和的数据结构。 大体的思路是在把普通最大子段和的信息看成和增量有关的一次函数,然后维护增量为多少时取到最大值的信息会改变,相当于是维护凸壳,但是只维护当前段和当前段的末尾位置,通过势能分析可以得到复杂度是 \(O((n+m)\l 阅读全文 »
posted @ 2024-02-14 17:33 Xttttr 阅读(569) 评论(0) 推荐(2) 编辑
摘要:小清新数据结构 很小清新的数据结构题,主要是线段树和树状数组。 CF840D Destiny 题意:求区间内是否存在出现次数严格大于 rl+1k 的数。 来自Alex_Wei老师的神仙思路:设d为严格大于rl+1k的最小数,那么如果 阅读全文 »
posted @ 2024-02-14 16:24 Xttttr 阅读(64) 评论(0) 推荐(1) 编辑
摘要:莫队 莫队是一种常见的离线处理区间查询问的方法。 莫队的思想是把序列分块,然后把询问按照左端点所在块为第一关键字,右端点为第二关键字排序,然后处理询问,维护指针 l,r 表示当前处理的区间是 [l,r],每次根据询问区间来移动指针计算贡献。 关于复杂度。假设指针移动的复杂度是 \(O 阅读全文 »
posted @ 2024-02-14 16:22 Xttttr 阅读(22) 评论(0) 推荐(0) 编辑
摘要:矩阵加速 矩阵加速主要是把 DP 的转移写成矩阵的形式,然后用矩阵快速幂优化。 可以用矩阵快速幂优化要求矩阵的运算是满足有结合律的,常用的 min,+ 卷积等。 还有一些特殊技巧,比如多组询问时可以预处理幂次的矩阵然后查询时直接用行向量来乘,以及存在矩阵光速幂。 P4223 期 阅读全文 »
posted @ 2024-02-14 11:47 Xttttr 阅读(25) 评论(0) 推荐(0) 编辑
摘要:NOI真题 记录一些做过的 NOI 真题。 NOI2013 向量内积 题意:有 nd 为向量,求是否有两对向量的点积是 2 或 3 的倍数。 思路:先random_shuffle一下,然后一次判断和前面的和的乘积,如果发现出现了不满足全部模起来都不为0就说明出现了答案,与前面的 阅读全文 »
posted @ 2024-02-14 11:45 Xttttr 阅读(49) 评论(0) 推荐(0) 编辑
摘要:数位 DP 数位 DP 的常见套路就是记录当前到哪一位,是否抵着上界,转移时枚举当前可以填哪些数,做一遍记忆化搜索。 P3413 SAC#1 - 萌数 题意:求 [l,r] 中有多少个数中含有回文子串。 思路:如果存在回文子串,那么必然有相邻两位相同或者间隔一位相同,在数位 DP 时额外记录 阅读全文 »
posted @ 2024-02-14 11:23 Xttttr 阅读(30) 评论(0) 推荐(0) 编辑
摘要:树形DP 树形 DP 是一种常见的 DP 形式,具有代表性的有树上背包、换根 DP,基环树上 DP。 一些和路径相关的问题的常见状态是把当前路径已确定的端点数计入状态。 还有一些小技巧。比如树上背包如果必须选择根节点,可以直接在 dfs 序上进行转移。 CF1146F Leaf Partition 阅读全文 »
posted @ 2024-02-14 10:17 Xttttr 阅读(18) 评论(0) 推荐(0) 编辑
摘要:势能相关 P5905 【模板】全源最短路(Johnson) 题意:有负权情况下的全源最短路。 思路:Johnson 全源最短路可以在 O(nmlogm) 的复杂度内解决带有负权的全源最短路。 这个算法的巧妙之处在于为每个点赋予 势能 hi。从一个点到另一个点,无论走什么路径,势 阅读全文 »
posted @ 2024-02-14 09:57 Xttttr 阅读(7) 评论(0) 推荐(0) 编辑
摘要:交互杂题选做 记录一些自己写过的很有意思的交互题。 另外 JOISC 中有很多有意思的交互题,很值得一做。 CF1292E Rin and The Unknown Flower 题意:交互题,你要猜一个长为 n 的由 CHO 构成的字符串,你每次可以询问一个长度为 t 的字符 阅读全文 »
posted @ 2024-02-13 21:57 Xttttr 阅读(15) 评论(0) 推荐(0) 编辑
摘要:随机化 主要是爬山、退火和其他神秘随机化题。 随机化题主要利用的就是用随机的方法获得正确答案的概率很大,于是可以随机化。 爬山和模拟退火的区别就在于爬山不接受劣解,因此有时候要随机起点来增大正确性。 [AGC035D] Add and Remove 思路:直接爬山。 CF852A Digits 题意 阅读全文 »
posted @ 2024-02-13 21:49 Xttttr 阅读(30) 评论(0) 推荐(0) 编辑
摘要:数学 主要是计数和数论函数相关。 [AGC031F] Walk on Graph 题意:有一张 n 个点 m 条边的无向连通图 G,每条边有长度 Li,有一个人在上面游走。 有 q 组询问,每组询问给出 si,ti,ri,询问是否存在一条从 \ 阅读全文 »
posted @ 2024-02-13 21:18 Xttttr 阅读(38) 评论(0) 推荐(0) 编辑
摘要:WQS二分 WQS二分是一种可以处理一类带有限制的问题的方法,这种限制一般是恰好选 k 个的形式,而且要求原问题有凸性。 比如函数是上凸的,那么斜率就递减,如果我们去二分这个斜率,那么可以快速求出切点,而切点横坐标代表我们选择了多少个,于是我们就可以根据这个数目和题中要求的k进行比较 阅读全文 »
posted @ 2024-02-13 12:05 Xttttr 阅读(20) 评论(0) 推荐(0) 编辑
摘要:凸包 一般通过证明或观察出斜率有单调性于是可以用凸包维护。 P5155 [USACO18DEC]Balance Beam P 题意:有长为n的序列,每次等概率向左右移动一格,也可以结束并获得当前位置上的值,求每个位置的最大期望收益。 思路:完全不懂期望! 首先有一个结论,在[0,L] 阅读全文 »
posted @ 2024-02-13 12:02 Xttttr 阅读(10) 评论(0) 推荐(0) 编辑
摘要:区间满足条件的子区间计数 一般是扫描线,可能会有线段树维护历史版本信息。 CF526F Pudding Monsters 题意:给定一个 n×n 的棋盘,其中有 n 个棋子,每行每列恰好有一个棋子。对于所有的 1kn,求有多少个 \(k 阅读全文 »
posted @ 2024-02-13 11:58 Xttttr 阅读(110) 评论(0) 推荐(0) 编辑
摘要:李超线段树 李超线段树一般的操作是加入一个线段求在某个点处的极值。 李超线段树每个节点有一个优势线段,表示在 mid 处取到最优的线段,相当于是标记永久化,如果不是优势线段,那么其最多在 l,r 中的一个位置比当前线段最优,因此最多递归进入一个孩子,于是复杂度是 \(O(\log n 阅读全文 »
posted @ 2024-02-13 11:53 Xttttr 阅读(43) 评论(0) 推荐(0) 编辑
摘要:可查询双端队列 操作:头插头删,尾插尾删,查最大值。 做法:从中点维护向左、向右两个单调栈(不强制加入),如果一个单调栈被删空了就重构。 复杂度证明:一次重构的复杂度是两个单调栈的长度差,而每次操作最多使长度差 +1,于是总复杂度是 O(n) 的。 P1295 [TJOI2011] 书架 题 阅读全文 »
posted @ 2024-02-13 11:41 Xttttr 阅读(8) 评论(0) 推荐(0) 编辑
摘要:根号分治 根号分治其实一般是广义上的阈值分治,当范围不超过 B 时用一种方法,超过 B 时用另一种做法。 之所以叫根号分治主要是大部分的应用都是在和一定时,不超过 n 的可以把所有 1n 的都处理,超过 n阅读全文 »
posted @ 2024-02-13 11:38 Xttttr 阅读(91) 评论(0) 推荐(0) 编辑
摘要:点分治 点分治是一种处理树上路径问题的常见方法。 先引入例题。 求树上有多少条路径的长度是 3 的倍数。 点分治的过程是每次找到当前联通块的重心,然后处理所有跨过重心的路径,然后删去重心,递归每个子树再进行处理。 根据重心的性质,重心的每个儿子的子树大小都不超过 n2,因 阅读全文 »
posted @ 2024-02-13 11:22 Xttttr 阅读(32) 评论(0) 推荐(0) 编辑
摘要:单位根反演 [n|a]=1nk=0n1wnak证明: 当i0(modn)时,由等比数列求和公式可得: 原式\(=\dfrac{1}{n}\times \dfrac{w^{an}_n-1}{w 阅读全文 »
posted @ 2024-02-13 10:23 Xttttr 阅读(33) 评论(0) 推荐(0) 编辑
摘要:CDQ 分治 其实CDQ本质就类似线段树,i的贡献由1i1在线段树上拆出的log个节点组成,然后将可以被同一段区间做贡献的点一起计算从而保证复杂度。 例题: P3810 【模板】三维偏序(陌上花开) 题意:对于k[1,n]求三维偏序数量为k的点的个数 阅读全文 »
posted @ 2024-02-13 10:13 Xttttr 阅读(71) 评论(0) 推荐(0) 编辑
摘要:FWT FWT 即位运算卷积,用来快速计算形如 ij=kfigj,其中 表示某种位运算。 设 FWT(A) 是幂级数 A经过 FWT 变换之后得到的幂级数。 我们需要令其满足 : \(A*B=C \Longl 阅读全文 »
posted @ 2024-02-13 09:57 Xttttr 阅读(16) 评论(0) 推荐(0) 编辑
摘要:线段树分治 线段树分治是一种可以离线处理带撤销问题的常用手段。一般而言,题目中加入操作很好维护,但删除操作不好维护,这时可以对时间维建线段树,把每一个操作加入其存在时间段对应的线段树节点上,然后处理所有询问,进入一个节点时将这个节点里的操作加入,递归左右儿子,然后撤销这一次做的操作,在线段树根节点处 阅读全文 »
posted @ 2024-02-12 21:39 Xttttr 阅读(207) 评论(0) 推荐(0) 编辑
摘要:boruvka算法 就是最小生成树 B 算法。B 算法的思路是每次对每个连通块,求出它能连出去的权值最小的边,然后再按边权从小到大合并。由于每次操作连通块数至少减半,所以复杂度是 O(mlogn)。 CF1305G Kuroni and Antihype 题意:长为 n 的数列 阅读全文 »
posted @ 2024-02-12 21:07 Xttttr 阅读(64) 评论(0) 推荐(0) 编辑
摘要:JOISC 2018 loj 上有几乎全部的题目,写了题意的就是 loj 上没有的。 D1T1 简单题。 根据颜色段均摊的结论,每个点到根的路径上颜色段的总和是 O(nlogn) 的,于是直接每次暴力找颜色段即可。复杂度 O(nlog2n)。 提交记录 D1T2 又是计算几何 阅读全文 »
posted @ 2024-02-12 11:34 Xttttr 阅读(20) 评论(0) 推荐(0) 编辑
摘要:JOISC 2017 loj 上有几乎全部的题目,写了题意的就是 loj 上没有的。 D1T1 开场放大。 首先,对于一个点,它最后覆盖的一定是一个矩形,这就意味着如果我们知道了 u,d,l,r 操作各用了多少次,他们之间的顺序是不重要的,我们可以直接当做把一种操作做完再做剩下的操作,这样就 阅读全文 »
posted @ 2024-02-12 11:01 Xttttr 阅读(26) 评论(0) 推荐(0) 编辑
摘要:JOISC 2016 loj 上有几乎全部的题目,写了题意的就是 loj 上没有的。 D1T1 一开始把题目看错了,还写了棵线段树。 把询问离线,倒着扫一遍,就变成了求最长不上升子序列,用树状数组维护即可。 提交记录 D1T2 来自 Kubic 的神仙做法。 考虑 Filp 一个位置和剩下所有位置, 阅读全文 »
posted @ 2024-02-12 10:37 Xttttr 阅读(16) 评论(0) 推荐(0) 编辑
摘要:JOISC 2015 loj 上有几乎全部的题目,写了题意的就是 loj 上没有的。 D1T1 简单题。 因为 k 很小,考虑依次确定最后第 i 位是什么。我们倒序考虑所有操作,维护最后第 i 位当前在第几位,就可以一直推下去。 提交记录 D1T2 直接暴力复杂度就是 \(O 阅读全文 »
posted @ 2024-02-12 10:21 Xttttr 阅读(30) 评论(0) 推荐(0) 编辑
摘要:JOISC 2014 loj 上有几乎全部的题目,写了题意的就是 loj 上没有的。 D1T1 想到了最短路的做法,不过可能还需要整体二分,复杂度至少有 2 log。 有复杂度更优秀的贪心做法。把边按时间倒序加边,然后从终点开始 dfs 来更新每个点可以的最晚出发时间,每条边走之后肯定就不会再让答案 阅读全文 »
posted @ 2024-02-12 09:53 Xttttr 阅读(35) 评论(0) 推荐(0) 编辑
摘要:拉格朗日插值 第一步:子函数 fi(x)={1x=xi0x=xj(ij) 由此可得:f(x)=i=1nyifi(x) 第二步:对于 fi(x),要满足当x=xi阅读全文 »
posted @ 2024-02-11 21:56 Xttttr 阅读(102) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示