随笔分类 -  二分答案

摘要:一、STL版本的插入二分排序 #include <bits/stdc++.h> using namespace std; const int N = 6; int a[N] = {3, 2, 1, 4, 5, 7}; void BinInsertSort(int a[], int n) { fo 阅读全文
posted @ 2023-02-20 13:14 糖豆爸爸 阅读(36) 评论(0) 推荐(0) 编辑
摘要:##AGC006D Median Pyramid Hard 一、题目描述 二、题目解析 这道例题看到时毫无头绪,因为课程是二分,所以往二分的方向想,猜到是 二分枚举最上面的那个数是多少,但依然不会做。 事实上,因为我们求得是 中位数,所以每个数对我们来说 只有与枚举的数的大小关系 需 阅读全文
posted @ 2022-12-29 17:15 糖豆爸爸 阅读(55) 评论(0) 推荐(0) 编辑
摘要:二分总结 命名规则 为描述方便,下面文中提示的: 升序理解为不降序,即按顺序输入的数字,每个数字对比前面的数字,可等于可大于,但不能小于。 降序理解为不升序,即按顺序输入的数字,每个数字对比前面的数字,可等于可小于,但不能大于。 一、函数定义与用途 lowerbound 用途: 阅读全文
posted @ 2022-07-13 09:03 糖豆爸爸 阅读(47) 评论(0) 推荐(0) 编辑
摘要:##AcWing 113. 特殊排序 前导知识 一、题目描述 有 N 个元素,编号 1,2..N,每一对元素之间的大小关系是确定的,关系具有反对称性,但 不具有传递性。 注意:不存在两个元素大小相等的情况。 也就是说,元素的大小关系是 N 个点与 $\frac{N×(N−1)}{ 阅读全文
posted @ 2022-06-29 15:02 糖豆爸爸 阅读(103) 评论(0) 推荐(0) 编辑
摘要:AcWing 102. 最佳牛围栏 一、题目描述 农夫约翰的农场由 N 块田地组成,每块地里都有一定数量的牛,其数量不会少于 1 头,也不会超过 2000 头。 约翰希望用围栏将一部分 连续的田地 围起来,并 使得围起来的区域内每块地包含的牛的数量的平均值达到 阅读全文
posted @ 2022-06-29 11:09 糖豆爸爸 阅读(195) 评论(0) 推荐(0) 编辑
摘要:##P2824 [HEOI2016/TJOI2016]排序 一、题目大意 给一个序列, 两种操作, 一种是将[l,r]里所有数升序排列, 一种是降序排列。 所有操作完了之后, 问你a[k]等于多少。 二、解题思路 由于将一个普通序列排序很慢,需要nlogn的时间,可以转化为 阅读全文
posted @ 2022-04-29 15:48 糖豆爸爸 阅读(29) 评论(0) 推荐(0) 编辑
摘要:AcWing 1142. 繁忙的都市 一、题目描述 城市C是一个非常繁忙的大都市,城市中的道路十分的拥挤,于是市长决定对其中的道路进行改造。 城市C的道路是这样分布的: 城市中有 n 个交叉路口,编号是 1n,有些交叉路口之间有道路相连,两个 阅读全文
posted @ 2022-03-23 16:10 糖豆爸爸 阅读(121) 评论(0) 推荐(0) 编辑
摘要:题目传送门 一、为什么可以使用二分,怎么想到的? 每段和的最大值最小。,提示的很明显,什么最大值最小,最小值最大等等,均可以视为二分答案题。为啥呢?因为二分的本质是区间逼近,这样才能求出极值,不用二分你说用啥? 二、二分查找的是什么? 本题查找的肯定是每段和的最大值,逼近的是让它最小。 三、左右边界 阅读全文
posted @ 2021-07-26 09:12 糖豆爸爸 阅读(126) 评论(0) 推荐(0) 编辑
摘要:题目传送门 #include <bits/stdc++.h> using namespace std; typedef long long LL; const int N = 100010; int a[N]; int L;//表示公路的长度 int n;//原有路标的数量 int k;//最多可增 阅读全文
posted @ 2021-07-26 08:15 糖豆爸爸 阅读(224) 评论(0) 推荐(0) 编辑
摘要:理解 1、check(int x) 检查x是否满足某种性质 2、模板1为:满足条件向左逼近,不满足条件向右逼近。如果有多个满足条件的数据,返回最左边那个。 3、模板2为:满足条件向右逼近,不满足条件向左逼近。如果有多个满足条件的数据,返回最右边那个。 4、yxc大佬的模板,适用于二分查找和二分答案。 阅读全文
posted @ 2021-07-25 12:54 糖豆爸爸 阅读(109) 评论(0) 推荐(0) 编辑
摘要:题目传送门 #include <bits/stdc++.h> using namespace std; typedef long long LL; //典型的二分答案题, 答案为最短(可以理解为最小)的跳跃距离最大值 int L; int n, m; const int N = 50010; int 阅读全文
posted @ 2021-07-25 10:39 糖豆爸爸 阅读(60) 评论(0) 推荐(0) 编辑
摘要:题目传送门 无脑的二分答案模板,锻炼写一下check函数吧。 同时有一点需要注意,就是l的初始值不能是0!,否则第四个测试点RE掉! #include <bits/stdc++.h> typedef long long LL; using namespace std; const int N = 阅读全文
posted @ 2021-07-25 10:37 糖豆爸爸 阅读(73) 评论(0) 推荐(0) 编辑
摘要:题目传递门 本题是一道二分答案的板子题,有一点点贪心。 总结: 1、lr的确定,我喜欢使用数组排序来获取最终的最大值,即r;而l不一定是数组的最小值,这个和题意有关,也可能是0。 2、即然是二分答案的模板题,那板子是必须的,另一个重要的问题就是check函数了,它需要检查什 阅读全文
posted @ 2021-07-22 17:10 糖豆爸爸 阅读(485) 评论(0) 推荐(2) 编辑
摘要:题目传送门 #include <bits/stdc++.h> using namespace std; typedef long long LL; const int N = 1e6 + 10; int a[N]; int n; LL m; bool check(int x) { LL sum = 阅读全文
posted @ 2021-07-22 11:16 糖豆爸爸 阅读(79) 评论(0) 推荐(0) 编辑

Live2D
点击右上角即可分享
微信分享提示