随笔分类 - 高效算法思想--二分
摘要:n<=1000000个数互不相同,我回答m<=25000个询问说Li到Ri最小值是Xi,求最早第几次答得互相矛盾。 首先找到矛盾的情况:一是两个无交区间最小值相同,二是大区间最小值比它子区间的最小值大。 方法一:二分答案,每次看一段里面有没有这两种冲突。先把询问按Xi排个序扫一次就知道有没有冲突一,
阅读全文
摘要:n<=100000个点在坐标系上,选m个点使点间最小距离最大。 二分模板?? 1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<string.h> 4 #include<algorithm> 5 #include<math.h> 6 //#inc
阅读全文
摘要:数轴上n<=500000个点,点i在Xi处有Ai个东西,Xi递增,每秒钟可移动一单位并瞬间拿或放一个东西,最多能同时拿一个东西,任选择一个点在T<=1e18秒内把尽可能多的东西拿到该点。 感谢KPM大佬提供的解法!方便快捷! 最优方案一定是在这n个点上,因此枚举点看如何计算最优答案。 越往右边的点取
阅读全文
摘要:给n<=100对点,从每对点里面挑一个并以这些挑出的点为圆心画圆,并且这些圆不能互相覆盖,找出一种方案使得这些圆半径中最小的那个最大。 “最小值最大”就是二分答案啦!考虑现在每个点都画出半径x的圆,如何选点呢? 可以发现选了一个点P之后与其距离相差2x内的点Q都不能被选,也就是“与P在同一对的另一个
阅读全文
摘要:给出字符串s和t,以及s的长度n的一个全排列,求按照这个排列依次删除s的字符,删到何时s中不含子序列t。 解法一: t中的每个字符的位置在s中跳啊跳,合法的情况下t中的字符在s中的位置应该是单调递增的,因此让t中的字符在s中建的邻接表里跳啊跳就好了。 1 #include<cstdio> 2 #in
阅读全文
摘要:用一个圆心在(x,y)的圆环覆盖一个n边形,顺或逆时针给出n边形所有顶点,求圆环最小面积。 卡了好久,各种傻逼错误。。 题目就是让我们固定一大一小两个边界圆,我们来看看这两个圆满足什么条件。 首先外面的那个圆肯定是经过n边形的某个顶点,所以外圆半径就是最大的点距。 其次内圆呢,可能经过一个点,也可能
阅读全文