二分
二分搜索 + 二分答案,这是一个值得特别新开一个专栏的算法分类。
江心之人
萌新一枚
展开
-
Codeforces C - Pinkie Pie Eats Patty-cakes(二分答案)
题目 链接题目大意给定一个离散序列,包含n个数字,重排这个序列,使得两个相同数字最小距离最大。题目简析关键词触发,最小的xx最大,我们尝试用二分去求解。首先应当注意到的一个点在于,每个数字之间的性质是相同的,这就意味着“1 1 1 3 3”序列和“2 2 2 3 3”序列答案应当是一样的,所以我们首先读入的时候要统计数字的个数,而不用关心具体的数字是什么,上面的例子就会被简化成“3 2”,也就是说有两个数字,一个数字有3个,一个数字有2个,求答案。二分思路,设置左端点0,右端点n,找到最后一个符原创 2020-08-13 19:51:13 · 368 阅读 · 0 评论 -
P3743 kotori的设备(实数二分答案)
题目 链接题目描述第 i 个设备每秒消耗ai个单位能量。能量的使用是连续的,也就是说能量不是某时刻突然消耗的,而是匀速消耗。也就是说,对于任意实数 ,在 k 秒内消耗的能量均为k*ai 单位。在开始的时候第 i 个设备里存储着bi个单位能量。同时 kotori 又有一个可以给任意一个设备充电的充电宝,每秒可以给接通的设备充能p 个单位,充能也是连续的,不再赘述。你可以在任意时间给任意一个设备充能,从一个设备切换到另一个设备的时间忽略不计。kotori 想把这些设备一起使用,直到其中有设备能量降为 0原创 2020-08-07 01:11:30 · 274 阅读 · 0 评论 -
P3853 [TJOI2007]路标设置(二分答案)
题目 链接题目描述现在政府决定在公路上增设一些路标,使得公路的“空旷指数”最小。他们请求你设计一个程序计算能达到的最小值是多少。请注意,公路的起点和终点保证已设有路标,公路的长度为整数,并且原有路标和新设路标都必须距起点整数个单位距离。输入格式第1行包括三个数L、N、K,分别表示公路的长度,原有路标的数量,以及最多可增设的路标数量。第2行包括递增排列的N个整数,分别表示原有的N个路标的位置。路标的位置用距起点的距离表示,且一定位于区间[0,L]内。输出格式输出1行,包含一个整数,表示增设路标后原创 2020-08-07 01:02:19 · 1118 阅读 · 2 评论 -
P1182 数列分段 Section II(二分答案)
题目 链接思路简析尽可能地把数字分在一组里,但是不能超过check的值,二分的特征之一是 == 最大的值最小 == ,其次发现x,x+1,x+2,...,x+n都是有效的,找到最左边的有效值。参考代码#include <bits/stdc++.h>using namespace std;typedef long long ll;const int N = 100010;ll a[N];ll n, m;ll check(ll x) { ll cnt = 0; ll su原创 2020-08-07 00:55:36 · 276 阅读 · 0 评论 -
P2678 跳石头(思维 + 二分答案)
题目 链接题目描述这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石。组委会已经选择好了两块岩石作为比赛起点和终点。在起点和终点之间,有 N 块岩石(不含起点和终点的岩石)。在比赛过程中,选手们将从起点出发,每一步跳向相邻的岩石,直至到达终点。为了提高比赛难度,组委会计划移走一些岩石,使得选手们在比赛过程中的最短跳跃距离尽可能长。由于预算限制,组委会至多从起点和终点之间移走 M 块岩石(不能移走起点和终点的岩石)。输入格式第一行包含三个整数 L,N,M,分别表示起点到终点的距离,起点和终点原创 2020-07-27 02:02:01 · 244 阅读 · 2 评论 -
P2440 木材加工(二分答案)
题目 链接题目描述木材厂有一些原木,现在想把这些木头切割成一些长度相同的小段木头(木头有可能有剩余),需要得到的小段的数目是给定的。当然,我们希望得到的小段木头越长越好,你的任务是计算能够得到的小段木头的最大长度。木头长度的单位是cm。原木的长度都是正整数,我们要求切割得到的小段木头的长度也是正整数。例如有两根原木长度分别为11和21,要求切割成到等长的6段,很明显能切割出来的小段木头长度最长为5.输入格式第一行是两个正整数N和K(1 ≤ N ≤ 100000,1 ≤ K ≤ 100000000)原创 2020-07-27 01:07:32 · 2061 阅读 · 0 评论 -
P1873 砍树(二分答案)
题目 链接题目描述伐木工人米尔科需要砍倒M米长的木材。这是一个对米尔科来说很容易的工作,因为他有一个漂亮的新伐木机,可以像野火一样砍倒森林。不过,米尔科只被允许砍倒单行树木。米尔科的伐木机工作过程如下:米尔科设置一个高度参数H(米),伐木机升起一个巨大的锯片到高度H,并锯掉所有的树比H高的部分(当然,树木不高于H米的部分保持不变)。米尔科就行到树木被锯下的部分。例如,如果一行树的高度分别为20,15,10和17,米尔科把锯片升到15米的高度,切割后树木剩下的高度将是15,15,10和15,而米尔科将原创 2020-07-22 20:29:28 · 1916 阅读 · 1 评论 -
P1163 银行贷款(二分)
题目 链接题目描述当一个人从银行贷款后,在一段时间内他(她)将不得不每月偿还固定的分期付款。这个问题要求计算出贷款者向银行支付的利率。假设利率按月累计。输入格式三个用空格隔开的正整数。第一个整数表示贷款的原值,第二个整数表示每月支付的分期付款金额,第三个整数表示分期付款还清贷款所需的总月数。输出格式一个实数,表示该贷款的月利率(用百分数表示),四舍五入精确到0.1%。输入输出样例输入 #11000 100 12输出 #12.9题意分析首先需要知道公式。。。。给出n,m,k,求贷原创 2020-07-22 20:17:16 · 370 阅读 · 0 评论 -
P1678 烦恼的高考志愿(数学 + 二分)
题目 链接题目背景计算机竞赛小组的神牛V神终于结束了万恶的高考,然而作为班长的他还不能闲下来,班主任老t给了他一个艰巨的任务:帮同学找出最合理的大学填报方案。可是v神太忙了,身后还有一群小姑娘等着和他约会,于是他想到了同为计算机竞赛小组的你,请你帮他完成这个艰巨的任务。题目描述现有 (m≤100000) 所学校,每所学校预计分数线是(ai ≤10 )。有 (n≤100000) 位学生,估分分别为 (bi ≤106)。根据n位学生的估分情况,分别给每位学生推荐一所学校,要求学校的预计分数线和学生的原创 2020-07-21 19:14:02 · 474 阅读 · 0 评论 -
P1102 A - B 数对(二分)
题目 链接P1102 A - B 数对题目描述出题是一件痛苦的事情!相同的题目看多了也会有审美疲劳,于是我舍弃了大家所熟悉的 A+B Problem,改用 A-B 了哈哈!好吧,题目是这样的:给出一串数以及一个数字 C,要求计算出所有 A - B = C 的数对的个数(不同位置的数字一样的数对算不同的数对)。输入格式输入共两行。第一行,两个整数 N, C。第二行,N 个整数,作为要求处理的那串数。输出格式一行,表示该串数中包含的满足 A - B = C 的数对的个数。输入输出样例输原创 2020-07-21 18:56:43 · 423 阅读 · 0 评论 -
P2249 查找(二分)——用二分的角度看世界
P2249 【深基13.例1】查找 模板题目大意给定n个数字然后给m个查找,每次查找给定数字x的位置。思路二分板子,找出最左边的那个数字就行。参考代码#include <bits/stdc++.h>using namespace std;const int N = 1000010;int a[N];int n;int find(int x) { int l = 0, r = n; while (l < r) { int mid = l + r >&原创 2020-07-19 15:53:09 · 107 阅读 · 0 评论 -
P1024 一元三次方程求解(暴力 + 二分)
P1024 一元三次方程求解题目描述有形如:ax3+bx2+cx1+dx0= 0 这样的一个一元三次方程。给出该方程中各项的系数(a,b,c,d均为实数),并约定该方程存在三个不同实根(根的范围在-100至100之间),且根与根之差的绝对值 ≥ 1。要求由小到大依次在同一行输出这三个实根(根与根之间留有空格),并精确到小数点后2位。提示记方程f(x)=0,若存在2个数x1和x2,x1 < x2,x1 * x2 < 0,则在(x1,x2)且之间一定有一个根。输入格式一行,4个实数A,B原创 2020-07-19 15:48:15 · 696 阅读 · 0 评论