随笔分类 -  算法基础——二分答案

摘要:CodeForces - 715B 先判断impossible的情况1. 0边全赋值为1,此时最短路>L2. 0边全赋值为inf,此时最短路<L 我们按读入顺序对0边进行排列,然后我们二分找到第一个必经0边,假设它在0边中的下标是第i个,那么1~i的0边为1,i+1~cnt的0边为inf(就是这些边 阅读全文
posted @ 2020-08-22 09:57 WeiAR 阅读(103) 评论(0) 推荐(0) 编辑
摘要:二分答案出最小距离,dpcheck,单调队列优化dp #include <iostream> #include <cstdio> #include <queue> #include <algorithm> #include <cmath> #include <cstring> #define inf 阅读全文
posted @ 2020-03-19 19:34 WeiAR 阅读(169) 评论(0) 推荐(0) 编辑
摘要:P1487 失落的成绩单a[i]=a[i-2]-2.0*a[i-1]+2.0*d;a[2]越大,a[3]越小a[3]越大,a[4]越小所以a[2]越大,a[4]越大,a[3]越小就有了单调性,分奇偶进行二分细节:二分的时候,l不一定为0,1e10为浮点数,eps小点好 阅读全文
posted @ 2019-09-04 17:18 WeiAR 阅读(174) 评论(0) 推荐(0) 编辑
摘要:P1404 平均数二分答案,问题在于怎么O(n)check,把每个数都-mid,然后求前缀和,有点像最大子段和,精度问题的话就都乘1000 阅读全文
posted @ 2019-08-26 16:03 WeiAR 阅读(188) 评论(0) 推荐(0) 编辑
摘要:Swimming Balls https://vjudge.net/contest/318752#problem/J如果直接算,各种球的情况都不清楚,因为放一个球之后,水位的变化也会影响之前放入的球,不如,二分最终的水位高度,这样每个球的贡献就有了 阅读全文
posted @ 2019-08-19 10:34 WeiAR 阅读(139) 评论(0) 推荐(0) 编辑
摘要:贪心+二分答案 二分最终答案长度 主要问题在check上 ~~我代码写得巨丑,大家还是不要看我的代码了~~ 1:当mid大于1的时候,贪心策略是这样的: 当前连续的长度大于mid时,我不反转最后一个,我也不管它具体反转哪一个,我直接跳过这mid+1个,也就是开始处理i+1。举个例子,mid=3,k= 阅读全文
posted @ 2019-08-13 22:45 WeiAR 阅读(173) 评论(0) 推荐(0) 编辑
摘要:P1168 中位数树状数组+二分答案。树状数组就是起一个高效查询比二分出来的数小的有几个。 阅读全文
posted @ 2017-11-07 14:04 WeiAR 阅读(259) 评论(0) 推荐(0) 编辑
摘要:P1510 精卫填海二分答案二分背包容量,判断能否满足v。判断的话就跑01背包就好了。 阅读全文
posted @ 2017-10-28 17:56 WeiAR 阅读(254) 评论(0) 推荐(0) 编辑
摘要:洛谷P1372 又是毕业季I 对于答案a,k*a是最接近n的,即a=n/k(下取整),所以直接输n/k即可。 我的方法是 二分查找 n/k真的没有想到唉。 我找的最大公约数,如果当前的mid对应的个数比k大,就往大了找,否则往小里找,对于边界问题,要加一些特判。 阅读全文
posted @ 2017-08-23 08:28 WeiAR 阅读(100) 评论(0) 推荐(0) 编辑
摘要:洛谷P1396 营救 多种解法: 1.spfa,只是松弛操作时更新的是路径上最大值的最小值;(最慢。。24ms) 2.Kruskal 从小到大加边,直到getfather(s)==getfather(t),然后输出当前边权;(最快。。4ms) 3.Bfs+二分答案,二分出来mid,然后用边权小于mi 阅读全文
posted @ 2017-08-10 16:36 WeiAR 阅读(163) 评论(0) 推荐(0) 编辑