![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
二分算法
文章平均质量分 65
2
逍遥Fau
为伊蕾娜献上心脏!
展开
-
P3250 [HNOI2016]网络 (整体二分 + 树上差分)
题目链接: P3250 [HNOI2016]网络大致题意给定一棵有nnn个节点的树, 有mmm次如下操作:0 a b c 表示在(a,b)(a, b)(a,b)的最短路径上增加一条重要度为ccc的边.1 t 表示删除第ttt次操作所增加的边2 x 表示节点xxx出现故障. 此时需要回答, 所有不经过xxx节点的边中最大的重要度.解题思路整体二分我们考虑到二分答案, 假设当前二分值为midmidmid, 我们把所有allallall条≥mid\ge mid≥mid的边加入, 判断对于xxx节点原创 2021-11-22 20:41:51 · 193 阅读 · 0 评论 -
P4175 [CTSC2008]网络管理 (动态树上第k大)
题目链接: P4175 [CTSC2008]网络管理大致题意给定一棵有nnn个节点的树, 节点上有权值wiw_iwi. 有mmm次操作.0 a b 表示把节点aaa的权值修改为bbb. 即: wa=bw_a = bwa=bk a b 查询(a,b)(a, b)(a,b)最短路径上, 第kkk大的值.解题思路➡️静态树上第kkk小⬅️点这里如果没有做过这个题的静态版本, ⬆️推荐博客⬆️. 下文讲解也会基于上述博客.很多静态树上第kkk小的做法也都适用于本题, 可以参考上述博客, 本文只原创 2021-11-20 18:38:13 · 377 阅读 · 0 评论 -
USACO 1.4.6 滑雪场设计
1.4.6 滑雪场设计题目考查暴力枚举 三分解题思路我们考虑山的高度范围为[0,100][0, 100][0,100], 因此, 我们一定能找到一个l∈[0,83],r=l+17l \in [0, 83], r = l + 17l∈[0,83],r=l+17, 使得所有山峰高度位于[l,r][l, r][l,r]区间时, 花费最小.因此思路1: 我们可以暴力枚举所有左端点, 然后所有花费取最小值即可考虑优化思路1, 因为通常题目的值域范围不会那么小, 如果值域变为[0,109][0, 10^9]原创 2021-09-29 15:59:47 · 106 阅读 · 0 评论 -
Codeforces1538G Gift Set (三分)
题目链接: Gift Set大致题意你有x个红气球, y个蓝气球.每次可以选择 ①: a个红气球, b个蓝气球 或 ②: b个红气球, a个蓝气球 分成一组.问: 最多能分多少组.解题思路三分首先我们的分组类型实际上只有两种. 如果数据范围小一些, 在1E7左右的范围, 我们可以暴力枚举一种情况, 然后计算出另外一种情况能凑出多少组.简化版例题: Codeforces519C A and B and Team Training但是本题的数据范围有1E9, 我们需要采取一种更快速的方法.原创 2021-07-07 16:53:48 · 180 阅读 · 0 评论 -
Codeforces1324D Pair of Topics (思维 + 二分)
题目链接: Pair of Topics大致题意给定两个数组a和b, 要求找出所有满足i < j 并且 ai + aj > bi + bj 的所有数对.解题思路我们不难想到先对等式变形, 不妨设ci = ai - bi, 则原式变为ci > -cj <==> ci + cj > 0.这是什么? 权值线段树!!!. 好吧, 我又来了个1A权值线段树. 竟和 1538C 如此的相似.我们发现, 我们可以去枚举每一个ci, 通过二分的方式找到符合的cj数量.为了避原创 2021-07-02 17:49:56 · 222 阅读 · 0 评论 -
P2824 [HEOI2016:TJOI2016]排序 (两种做法)
题目链接: P2824 排序大致题意给定一个1到n的排列,有m次操作, 每次选择一个区间[l, r]进行升序or降序排列.问: 操作完m次后, 第pos位置的数字是哪个?解题思路本文可能您也就看个乐, 这道题我的理解并没有很深.在这里会给出一种离线做法 二分 + 01线段树, 以及一种在线做法 线段树合并与分裂.离线做法只是针对本题这样, 最终操作完后, 询问一个位置的做法.而在线做法, 则比较通用了, 我们可以扩展题目, 假如边排序边询问, 或者要求输出最终排序后的序列.方法一:原创 2021-06-20 15:01:49 · 176 阅读 · 0 评论 -
Dynamic Rankings (动态主席树 / 整体二分)
题目链接: Dynamic Rankings2021.6.8 更新了区间线段树套权值线段树的解题方式, 并翻新了博客大致题意带修改的第k小数模板题.解题思路动态主席树 和 整体二分 的模板题!思路一: 树状数组 + 主席树考虑到通常的静态第k小数, 我们可以用主席树在O(mlogn)的优秀时间复杂度内求出结果. 其主体思路是在权值线段树上进行树上二分.现在考虑到有了单点修改操作, 我们如果直接在常规的主席树上进行修改, 当你修改pos位置时, 我们需要把[pos, n]区间的所有版本主席树原创 2021-06-08 11:22:40 · 464 阅读 · 1 评论 -
HDU2852 KiKi‘s K-Number (线段树 树上二分 / 树外二分)
题目链接: KiKi’s K-Number大致题意有一个空的容器, 有三种操作:0 a 把a加入容器中1 a 把a从容器中删除. 若有多个, 只删除一个, 若不存在a, 则输出 “No Elment!”2 a k 求整个容器中, 第k个比a大的数.特别注意, 第三个操作是求第k个比a大的数字, 而不是第k大数解题思路权值线段树 树状数组的normal题目当然要用线段树来写啦!我们直接分析操作, 相当于是一个单点修改 和 一个需要分析的查询操作.那么我们如何去寻找第k个比a大的数字?方原创 2021-05-14 20:25:44 · 193 阅读 · 0 评论 -
速度即转发 (整体二分 / 动态主席树)
题目链接: 速度即转发大致题意略解题思路整体二分 / 动态主席树考虑到对于s(x)函数, 其实是满足二分性质的. 所以我们可以考虑二分求解.我们发现我们需要维护的是, 对于每一次二分的答案mid, 我们需要知道有多少个数字比mid大, 以及他们的总和是多少. 我们可以用权值线段树 或者 两个树状数组来维护信息.整体二分做法我们直接二分值域, 每次假设mid为询问答案, 统计大于mid的位置信息, 然后判断是否满足要求即可.若满足要求, 则右区间去寻找. 反之去左区间寻找答案. 需要注意的原创 2021-05-12 22:33:49 · 76 阅读 · 0 评论 -
Jewel (主席树 / 整体二分)
题目链接: Jewel大致题意给定n个操作, 操作有如下四种:Insert X:插入x到序列末尾query1 L R X:在当前序列中的[l,r]区间找第x小的数query2 X:在当前序列中,输出X是第几小的数query3 X:找到当前序列中第X小的数是几。 然后输出的是3种query的和解题思路整体二分或主席树主席树做法需要将值域离散化, 然后进行正常的主席树查询操作即可.整体二分做法需要把操作离线, 然后二分求解即可.这个题主席树跑的很快, QAQ.AC代码#includ原创 2021-04-30 09:06:46 · 125 阅读 · 0 评论 -
P2617 Dynamic Rankings(动态主席树 / 整体二分)
题目链接: Dynamic Rankings大致题意有眼就行解题思路动态主席树 和 整体二分 的模板题!关于主席树的解法, 因为有单点修改, 所以我们要采用动态主席树. 具体方法就是, 把主席树中的存储方式采用树状数组的存储方式.因此查询的时候, 原本是传入一个l - 1版本和一个当前版本r, 但是由于采用了树状数组的存储方式, 就要传入logn个版本. 修改同理.整体二分不得不说, 这题整体二分跑的是真的快!AC代码主席树//例题: 求动态区间第K小数 (静态树 + 动态树做法)/原创 2021-04-29 20:54:45 · 144 阅读 · 0 评论 -
K-th Closest Distance (主席树)
题目链接: K-th Closest Distance大致题意给定一个长度为n序列, 有m次询问. 每次询问给出l, r, p 和 k. 表示询问序列[l, r]区间中和p的绝对值之差第k小的数字.解题思路主席树, 这不还是求一个区间第k小的问题, 所以首先我们应该想到用主席树来维护.考虑到询问, 每次要求与p绝对值之差第k小, 因此我们不妨二分, 对于当前mid, 我们统计有多少个数的值位于[p - mid, p + mid]区间.AC代码#include <bits/stdc++.h原创 2021-04-28 20:40:39 · 113 阅读 · 0 评论 -
Fireworks(三分) icpc2020 南京
题目链接: Fireworks大致题意你可以用n时间做一个烟花, 花m时间点燃所有烟花, 每个烟花有p的概率是完美的.问: 放出一个完美烟花花费的时间期望.解题思路我们读完题目后可以知道, 我们如果做的烟花过少, 或者烟花过多都不能取到最优解. (可以直接猜, 也可以求导)因此函数一定存在一个最小值, 我们可以通过三分答案来求解.AC代码#include <bits/stdc++.h>#define rep(i, n) for (int i = 1; i <= (n);原创 2021-04-12 17:39:34 · 246 阅读 · 0 评论 -
2020CCPC长春 The Tortoise and the Hare (树套树 / 整体二分)
题目链接: Stone Games大致题意题目背景大概是说龟兔赛跑的事情.龟兔赛跑的总路程为m, 有n个乌龟, 当兔子跑到终点的时候第i个乌龟已经跑了ai. 接下来有d天, 每天有两种事件. 事件一: 兔子拉着[l, r]区间内的乌龟去赛跑, 当他即将跑到终点后, 他会睡觉, 每一时刻他可以使得k个乌龟停留在原地, 剩下的乌龟会前进1. 兔子最终希望赢得比赛, 问最多能睡多久. 事件二: ai会变化为c.解题思路考虑到事件一, 我们发现, 如果可以睡觉的时间t, 则距离终点超过t(即: a原创 2021-04-11 16:42:11 · 237 阅读 · 0 评论 -
[ZJOI2013]K大数查询 (整体二分)
题目链接:K大数查询大致题意QAQ如题面所述解题思路我们需要实现的操作有三种: 区间修改, 区间查询, 查询区间第K大.然后一想, 可以树套树(推荐线段树+线段树), 然后我就一直错最后一个测试用例QAQ, 也不知道为什么.再转念一想, 我最近不是学了个整体二分, 查询第K大可以整体二分, 那么维护前面的区间操作可以采用线段树做维护.AC代码//整体二分代码#include <bits/stdc++.h>#define rep(i, n) for (int i = 1; i原创 2021-01-14 11:06:23 · 119 阅读 · 1 评论 -
洛谷P3380 二逼平衡树(树套树 / 整体二分)
题目链接: 二逼平衡树大致题意读不懂就不要做这个题啦!!!解题思路思路一: 线段树套平衡树(既然题目都叫树套树了, 总得给个面子吧.)首先我们观察五个操作, 我们发现他很像平衡树的题, 用平衡树维护序列有序即可. 但是由于每次查询是是对于区间的一次查询, 因此我们应当联想到采用线段树来维护询问区间, 然后再通过平衡树来解决问题. (这里稍微啰嗦几句, 一般的线段树套平衡树, 线段树的主要作用都是把查询的区间划分开. 因此线段树的内部是不维护信息的. 每次查询时, 我们通过线段树找到查询区间, 然后原创 2021-04-08 20:58:33 · 276 阅读 · 0 评论 -
Discrete Acceleration(浮点数二分)
题目链接: Discrete Acceleration大致题意:有一条路长为l, 起始于0, 结束于l. 这条路上有A和B两个人, 起初A在起点(0), B在终点(l). 两个人相向而行, 初始速度均为1.路上有n个加速点, 分别位于ai处, 每当有人经过加速点时, 这个人的速度就会加1. 问经过多长时间后两个人可以相遇.解题思路:二分答案即可, 最坏最坏也可以在l/2的时间相遇. 则一定存在一个时间t(0<=t<=l/2), 使得res = [t, l/2]均满足题意, 而我们需要得原创 2020-10-11 19:30:14 · 325 阅读 · 0 评论 -
High Load Database
题目连接: High Load Database大致题意:给你长度为n的整数序列. 询问q次, 每次给定一个整数t, 你要把给定的序列尽可能少的划分, 要求每部分的区间和不大于t.最终输出最少划分区间的数目.解题思路:这道题是很明显的前缀和+二分的题目. 因为涉及到区间和, 所以不难想到利用前缀和进行O(1)的化简.而二分的地方在于, 这个区间要么是不可能的, 即区间中的最大元素比给定的t大. 除此之外的情况就是可以二分的了;因为这个区间一定被划分成1-n份, n份一定是可行的. 在对于区间[原创 2020-06-29 23:56:48 · 378 阅读 · 0 评论 -
Obtain The String
You are given two strings s and t consisting of lowercase Latin letters. Also you have a string z which is initially empty. You want string z to be equal to string t. You can perform the following operation to achieve this: append any subsequence of s at t原创 2020-02-12 21:43:10 · 316 阅读 · 0 评论 -
Hamburgers(二分+贪心)(又名: 比奇堡的汉堡节)
比奇堡一年一度的汉堡节到了,身为比奇堡皇家指定汉堡王牌店铺”蟹堡王”的独一无二(emm,好像只有一个=.=)的厨师海绵宝宝超超超超...级开心,因为做汉堡是他最喜欢做的事(第二喜欢抓海母^.^),如果可以,海绵宝宝想做1万亿个汉堡给大家分享,但是抠门的蟹老板只为他提供一定的食材和一定的money供他买食材做汉堡,海绵宝宝很无奈(>.<), 只能妥协。抠门的蟹老板只提供了三种食材’B’(bread),’S’(sausage),’C’(cheese)也限制海绵宝宝只能买这三种食材,海绵宝宝OZR蟹老板也无动原创 2020-02-04 19:10:08 · 1305 阅读 · 0 评论