随笔分类 -  思想——分治——二分/三分

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

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