随笔分类 - 思想——分治——二分/三分
摘要:I.V.UOJ#284. 快乐游戏鸡 我们来思考一下你游戏的过程:每次找到一个最浅的 大于当前死亡次数的位置 ,走到那儿;不断这样,直到下面两件事中有一件先发生: 你当前的死亡次数允许你一路走到终点。 你的死亡次数已经不小于 ,需要寻找新的 。 然后
阅读全文
摘要:III.JOIOI 王国 (Kingdom of JOIOI) 考虑矩阵中的全局最大值和最小值。明显,如果有比最劣解更好的解法,则它们一定不会被分到同一组内。 于是,此最大值一定是某一个省的最大值,而此最小值一定是另一个省的最小值。 故我们考虑二分极差的最大值。则我们现在对于每个位置,它要么只能被分
阅读全文
摘要:V.III.[CTSC2018]混合果汁 二话不说先套个整体二分。 但是这题整体二分与先前两道题有所区别——前面两道题,当二分到区间 时,只需管 中的元素就行了,对于 不合法的询问直接减去这一段的询问的结果就行了; 但是,本题就不一样了:随着美
阅读全文
摘要:I.V.[FJOI2018]领导集团问题 这题的难点主要是在状态的设计上。 首先,一个naive的想法是设 表示节点 子树中,强制节点 选择的最优答案,然后使用线段树合并转移。 但是这样在合并不同子树时会出大问题。于是我们不得不更换状态。 于是我们设 \(f_
阅读全文
摘要:VII.[BalticOI 2005] Polygon 题解
阅读全文
摘要:XLVII.CF1500E Subset Trick 考虑对于每个集合大小 ,找到所有大小为 的集合中元素和最小的一个 与最大的一个 。则,所有 均不合法。 于是我们就要求 \(\Big|\bigcup\limi
阅读全文
摘要:XLIII.URAL1097. Square Country 2 考虑二分,二分后转成判定性问题,然后用扫描线+线段树处理即可。时间复杂度 。 代码: #include<bits/stdc++.h> using namespace std; int n,m,q; str
阅读全文
摘要:XXXIV.[九省联考2018]IIIDX 首先,一个非常naive的想法是,建出通关的树出来,然后dfs它,在访问到一个节点时,将现有最小的值赋给它,然后从大到小遍历每个子节点。 这个算法会被 相同的情形叉掉,因为它可以构造出这样一组数据:若某个节点的子树为 ,且它的兄长(指
阅读全文
摘要:XXX.CF505E Mr. Kitayuta vs. Bamboos “最大值最小”,条件反射套个二分上去。 于是现在问题转变成判定型问题。 正着搞不好处理 这种套了 的限制,干脆正难则反,考虑倒着处理。 于是问题转变为 第 天开头
阅读全文
摘要:XXVIII.[UOJ#576][ULR#1]服务器调度 非常可怕的大数据结构题,原版代码整整码了9K,就算稍微合并合并也剩下7K…… 首先,我们考虑对每种颜色,建出一棵虚树。考虑求出虚树的一条直径。则有个结论是原树上到任意一点最远的点肯定是此直径的端点之一。 例如,我们考虑下方的这棵树: O /
阅读全文
摘要:XXVII.CF573E Bear and Bowling 考虑暴力的DP。设 表示前 个元素中选择长度为 的子序列所能得到的最大收益。 考虑由 转移到 。明显,一共有两种转移方式:\(f_{i,j}\righta
阅读全文
摘要:XX.[APIO2018] New Home 新家 题解
阅读全文
摘要:XVI.CF360B Levko and Array 明显可以二分答案为。二分之后,我们考虑DP验证。 我们设表示强制保留时,最多可以保留多少个数。则我们显然有转移方程 \(\Large f_i=\max\limits_{j\in[1,i),|a_i-a_j|\leq(i-
阅读全文
摘要:XIII.CF226E Noble Knight's Path 这题分为在线和离线两种做法然而我只会在线 在线的思路很简单,即先树剖,然后建出主席树。主席树一维维护的是时间,每一棵主席树内部维护的是树剖剖出来的结果。 然后对于每一次询问: 首先先从两边跳链,找到LCA,并找出两点路径间没有被“亵渎”
阅读全文
摘要:III.[SDOI2016]数字配对 这题是[LightOJ1356]Prime Independence 的加强版Orz... 思想还是一致的,可以建出二分图来,只是二分图单重匹配变成了多重匹配。 然后呢?这个“价值”的约束怎么办? 题解的办法太神仙了,蒟蒻表示看不懂Orz... 于
阅读全文
摘要:II.[SCOI2015]小凸玩矩阵 二分图做的还是太少了orz…… 一看到“第大数的最小值”这种东西就应该条件反射二分。 如果套上二分的话,问题就转变为“能否选出不大于的个数”。 因为一行一列只能选一个数,我们就可以联想到这是把一行和一列给它匹配起来。 然后我们就可以写出
阅读全文
摘要:XV.[Codeforces GYM 101002K] YATP (没有单独的页面,就放个到大页面的连接罢) 我们考虑先套一个点分治。点分治后,考虑计算所有LCA为根节点的对中,最优的那些对。 我们考虑就算某两个点它们位于同一棵子树内也不要紧——这里它的权值被表示成 \(dep_i+dep_j+a_
阅读全文
摘要:XXXIII.CF547E Mike and Friends 实际上是一道很蠢的问题。 我们直接在后缀数组上二分,求出所有拥有串作为前缀的后缀所在的区间,则问题就被转换为某一区间中值在范围内的数的个数。显然是二维数点问题,于是直接离线后树状数组解决。 代码: #include
阅读全文
摘要:XXX.[CTSC2012]熟悉的文章 题解
阅读全文
摘要:XXVII.[BZOJ4310]跳蚤 我们仍然考虑二分子串。设当前二分的子串从位置开始,长度为。考虑如何编写check函数。 一个naive的想法便是从前往后枚举所有极大的不存在小于二分串的子串的段,然后将该段数与规定段数作比较。 但是这有点问题——我们发现,这样做每次都是为段中
阅读全文