
二分
FrostMonarch
这个作者很懒,什么都没留下…
展开
-
codeforces 1354D - Multiset (线段树或者2分)
题目大意:已知一个数列an,我们每次可以添加一个数k,或者把第k大的数字去掉。问我们经过k次操作后,数列中任意1个剩余的数字。n,q<=1e6解题思路:首先最简单的思路是线段树。线段树我们可以在每一个叶子节点用数字表示这个区间有多少个数字比如an:1 1 1我们的区间[1:1]就是3。然后做一个区间求和树即可。单点修改就在对应位置加1,去掉数字的话,我们就询问一下子节点中的左右节点,若左节点的和大于我们需要取出的第k个数,我们就往左走,否则k-=left_tree[root](表示我们原创 2020-05-22 20:06:39 · 204 阅读 · 0 评论 -
leetcode 33. 搜索旋转排序数组 (二分)
题目大意:有一个数列从[1,i] 单调递增,a[i+1]<a[1],然后[i+1,n]单调递增,现在问我们能不能以log的复杂度找到数列中是否存在某个数。解题思路:很显然,我们需要先找出i+1的坐标,然后使用两次lower_bound。那么我们怎么找到i+1的下标呢?这里有点像零点定理,每次我们找到中点m,假如中点的值大于a[1]的值,证明i+1在m的右边,否则i+1在m的右边,...原创 2020-04-23 11:35:50 · 233 阅读 · 0 评论 -
洛谷 P2680 运输计划 (二分,前向星,tarjan LCA,树上差分)
题目大意:有一棵带权值的树,树上有n个节点,m条路径(树上任意两点的路径唯一)。 现在我们可以使得任意一条边路径长度为0,问我们修改哪条边可以使得最长路径最短。即:其中d_i是每条边的距离。解题思路:最大值最小优先考虑使用二分。这里的答案满足 false false true true结构。我们预处理每个路径的长度和LCA。接着我们每次在做二分枚举mid完成 check()函数,ch...原创 2020-01-28 11:31:03 · 251 阅读 · 0 评论 -
codeforces ECR 80 minimax problem (二分 构造)
题目大意:有n个数列,选出第i,j个,我们可以得到新数列如下:for k 1->m: a[z][k]=max(a[i][k],a[j][k])问我们得到的新数列z中,哪一个的min(a[z][k])最大 即:max(min (a[z][k]))) {k:1->m }解题思路:这种最小值最大 或者 最大值最小一般都是用二分来做。我们直接枚举答案mid,...原创 2020-01-17 13:15:53 · 216 阅读 · 0 评论 -
洛谷 P1314 聪明的质监员(二分 前缀和)
有两串数wn,vn ,现在有m个区间,同时指定一个W,每个区间会造成cost等于:最后需要求和y现在让我们求一个w 使得|y-s|的值最小。解题思路:首先考虑使用二分枚举w,为什么用二分呢?因为我们发现yi函数是关于w递减的,满足一种单调性。然后我们枚举使得y>=s的最大的w1,再二分枚举y<=s的最小的w2,最后答案要么是w1,要么是w2. 因为他们是极值点中...原创 2019-12-17 21:54:33 · 221 阅读 · 0 评论 -
洛谷 P1083 借教室(二分+差分)
题目大意:有数列An,每次我们可以选择一个区间做减法,问我们第几次操作会导致一个区间出现负数。n<=1e6解题思路:线段树是可以做的,但是貌似这题卡了线段树。这里使用二分枚举答案的方法。为什么这里适合用差分呢?因为这里满足false false ... true ... false的结构。每次枚举到一个点时,我们对指定线段做差分然后用前缀和恢复,最后做到复杂度O(nlogn) 其...原创 2019-12-16 20:23:44 · 228 阅读 · 0 评论 -
codeforces 603 div2 Everyone is a Winner(二分)
题目大意:求出中,k从1到n的所有解,注意相同的不需要打印。n=1e9.解题思路:首先我们可以暴力枚举k打表找找规律。然后我们发现,首先这个函数是单调递减的。同时,因为我们需要输出答案,所以答案数量不会太多。我们考虑这样子做二分,每次我们从x到n做二分。x为相同中的最小的k。然后我们找到它的右边界到哪里。什么意思呢?若n=108,通过暴力k我们得到如下的.108 54 36...原创 2019-12-10 17:57:46 · 152 阅读 · 0 评论 -
codeforces ECR77 div2 A Game with Traps(二分,线段覆盖)
题目大意:有m个士兵通过长度为n+1的道路,可是道路上有k个陷阱。每个陷阱都有危险程度,若士兵的能力没达到对应危险程度,那么这个士兵不能够通过这个陷阱。你是一个教官,教官能去拆陷阱,每个陷阱有li ri 和di(ri>=li) 分别表示陷阱的位置,拆陷阱的位置。di是危险程度。教官不会被陷阱干掉。问你最多可以带多少个士兵在t秒内完成n+1的道路。解题思路:难点1:首先,我们要想到...原创 2019-11-30 23:34:30 · 286 阅读 · 0 评论 -
atcoder beginner contest 144 Gluttony(二分答案)
题目大意:有an,bn ,我们找到an和bn每个元素的一种一一对应关系。使得min( max(ai*bi))。已知我们可以进行操作让an中的任一个元素减少1。操作数最大为k,问我们怎么操作,可以min( max(ai*bi))。解题思路:首先,我们一个很直接的发现是:让an和bn进行一个排序,让an从小到大让bn从大到小排序,这时候让它们上下对齐放好,它们上下连线即为一个最佳匹配。...原创 2019-10-28 21:50:28 · 456 阅读 · 0 评论 -
洛谷 P1462 通往奥格瑞玛的道路(最短路,二分)
题目大意:已知一幅图,从一个点出发到终点。每个点有一个点权值,每条边有一个负权值。问怎么走,可以使得我们从起点到终点时,经过的点权最大值最小,同时边权累计不超过-b,其中b是负数。解题思路:这种是经典的minimax问题,什么最小当中找最大,最大当中找最小。假设这里没有b的约束,同时这里的点权变为边权的话,我们可以生成一个最小(大)生成树,生成树上的两个点的路径的边权最小(大)值即为所...原创 2019-10-17 16:51:39 · 267 阅读 · 0 评论 -
洛谷P1014 Cantor表(二分 找规律)
题目大意:解题思路:额。。打表找规律,不需要真的模拟45°扫描,怎么找就各显各法了,大佬们找到了规律,10行就出来了,作为一名蒟蒻,只是看到了一些等差数列的规律。废话:此题关键是提醒自己二分怎么写,注意边界情况,注意什么情况朝哪边移动。代码(憋看了):#include <iostream>#include <vector>#include &l...原创 2019-07-21 21:19:36 · 241 阅读 · 0 评论