二分
迷亭1213
帅帅帅
展开
-
二分模板优化&三分
二分搜索之前整理的二分搜索模板在对找x的前驱、后继以及实数域上的二分都有各自不同的代码,其中一些小细节需要我们不断去测试修改最终得以实现不遗漏且保证答案正确性。而现在我们可以将上述几种不同的二分搜索代码整合在一起,对于不同的使用情况只需稍微修改一下“精度”即可。代码模板int low = 0,high = n; while(low <= high){ int mid = (low...原创 2020-02-23 11:54:09 · 353 阅读 · 0 评论 -
USACO 2019 December Contest, Silver 题解
1.MooBuzzDescriptionFarmer John 的奶牛们最近成为了一个简单的数字游戏“FizzBuzz”的狂热玩家。这个游戏的规则很简单:奶牛们站成一圈,依次从一开始报数,每头奶牛在轮到她的时候报一个数。如果一头奶牛将要报的数字是 3 的倍数,她应当报“Fizz”来代替这个数。如果一头奶牛将要报的数字是 5 的倍数,她应当报“Buzz”来代替这个数。如果一头奶牛将要报的数字是 ...原创 2019-12-17 20:04:52 · 2165 阅读 · 1 评论 -
POJ3362Telephone Lines解题报告
题意简述:在无向图上求出一条1~N的路径,使路径上第K+1大的边权最小。解题思路:本题可采用动态规划+SPFA,也可采用二分搜索,这里讲解二分搜索做法。我们知道,适用二分搜索的前提是答案具有单调性,本题符合该条件,于是我们可以把答案转化成:是否存在一种合法的升级方法,使花费不超过mid。转化后我们仍需做一些改变,我们令价格大于mid的边,边权看为1,小于等于的看作0,于是我们只需求1~n的...原创 2019-05-22 19:30:20 · 263 阅读 · 0 评论 -
树上点分治
点分治就是在一棵树上,对具有某些限定条件的路径静态的进行统计的方法。前置知识:树的重心树的DFS序数组模拟邻接表存树对树的操作常见两种:边分治、点分治。对于点分治,顾名思义,就是要按照点进行划分,利用递归来实现分治。如果给定一棵树,以及树上的两个节点x和y,那么“序列上的区间”相对于的就是“两点之间的路径”。例题:POJ1741Tree给一颗有N个点的树,每条边都有一个权值。树...原创 2019-04-22 20:35:02 · 391 阅读 · 0 评论 -
bzoj3110 K大数查询
bzoj3110 K大数查询Description有N个位置,M个操作。操作有两种,每次操作如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c如果是2 a b c形式,表示询问从第a个位置到第b个位置,第C大的数是多少。Input第一行N,M接下来M行,每行形如1 a b c或2 a b cOutput输出每个询问的结果Sample Input2 51...原创 2019-04-08 19:17:16 · 225 阅读 · 0 评论 -
CDQ分治笔记
CDQ分治笔记1.结论CDQ分治可以用来解决偏序问题,尤其对于三维偏序问题适用。CDQ分治重要思想:计算一个子问题对另一个子问题的贡献。CDQ分治的优劣:写起来较为简单,对时空有很大的优化;缺点是必须离线操作。2.二维偏序问题2.1逆序对逆序对: 设 A 为一个有 n 个数字的有序集 (n>1),其中所有数字各不相同。如果存在正整数 i, j 使得 1 ≤ i <...原创 2019-04-02 20:35:16 · 275 阅读 · 0 评论 -
划分树笔记
划分树笔记问题模型:对于给定的n个元素的序列A,有m次询问,每次询问给L ,R,K,请求出位于[L,R]内第K大的数。解题思路:朴素算法:用快速排序。由于我们有m次询问,而每次询问区间左右端点是不同的,故如果对每个询问进行排序,我们在得到答案后还需要将序列恢复原状。按照快速排序的效率O(nlgn),m次询问就是O(mnlgn)。如果m和n都很大,效率就低的可怜。划分树:由于划分树...原创 2019-04-10 16:13:50 · 216 阅读 · 0 评论 -
POJ1064(二分搜索)解题报告
原题链接:POJ1064题意简述:有N根绳子,它们长度分别为Li。如果从他们中切割出K条长度相同的绳子的话,这K条绳子每条最长能有多长?答案保留到小数点后俩位。解题思路:用二分搜索方法来判断。首先假定一个解,判断其是否可行,不断缩小解的范围,从而得出答案。本题可以使用实数域上的的精度控制(即设置eps判断)或者干脆循环个几百次来逼近精度。注意点:printf()保留小数位时四舍五入...原创 2018-12-20 10:52:17 · 779 阅读 · 0 评论 -
POJ2456(最大化最小值)解题报告
原题链接:POJ2456题意简述:求在1~N中选C个位置,每俩个位置之间距离最小的值最大化。思路:让距离最小的那个距离最大。可以看出来答案具有单调性,那我们就可以转求解为判定,用二分搜索来求结果。具体做法就是假定一个答案,再不断缩小答案范围,最终得到解。注意点:while循环内的判定条件需要仔细考虑,稍有改变就会有截然不同的结论。代码示例:#include<cstdio...原创 2018-12-20 14:13:25 · 2028 阅读 · 0 评论 -
二分搜索算法笔记C++
1.背景1.1 结论在有序数组中查找某个值,或者在求最优解问题时,二分搜索非常有用。思想一般是先假定一个解,并判断是否可行,接着缩小解的范围继续判断。1.2 概念二分搜索法,是通过不断缩小解可能存在的范围,从而求得问题最优解的方法。在程序设计竞赛中,经常可以见到二分搜索法和其他算法结合的题目。2.二分搜索2.1思想二分答案转化为判定。一个宏观的最优化问题也可以抽象为函数...原创 2018-12-20 15:14:18 · 1080 阅读 · 2 评论 -
2017蓝桥杯省赛:分巧克力
题意描述:儿童节那天有K位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。 小明一共有N块巧克力,其中第i块是Hi x Wi的方格组成的长方形。 为了公平起见,小明需要从这 N 块巧克力中切出K块巧克力分给小朋友们。切出的巧克力需要满足: 1. 形状是正方形,边长是整数 2. 大小相同 例如一块6x5的巧克力可以切出6块2x2的巧克力或者2...原创 2019-03-03 19:53:27 · 2411 阅读 · 1 评论