
二分
AKone123456
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Pie POJ - 3122--------------------思维(浮点数二分)
题意:有n块圆形馅饼,每块的馅饼的半径为r,可以任意切分,剩下的都扔掉。问分给n+1个人,使得每个人获得馅饼的体积最大解析:先让每个数变成r*r,然后二分答案xO(n)计算当前答案为x,可以分得多少块 a[i]/x(1<=i<=n) 假设可以获得cnt块如果cnt>=n+1 说明x过小,使得cnt变大了,所以我们要调整下界#include<iostream>#include<cstdio>#include<cstring>...原创 2020-09-30 15:54:18 · 145 阅读 · 0 评论 -
River Hopscotch POJ - 3258---------------------------思维(二分最小值最大)
题意:有一条宽度为 L 的河,河的两端各有一块石头,河中有 n 块石头,每块石头到河起点一端的石头都有唯一的距离,现在要移除 m 块石头,求移除 m 块石头后,剩下的石头的间距的最小值最大。解析:二分答案间距为x如果两个石头之间的距离<x 那么我们就移除,cnt+=1如果cnt>m 说明x过大,移除了很多石头,我们就需要调整上界使x变小对于最小值最大化:对应区间(L,R] 中心:M=(L+R+1)/2对于最大值最小化:对应区间[L,R) 中心:M=(L+R)/2#incl...原创 2020-09-29 22:58:19 · 195 阅读 · 0 评论 -
Median POJ - 3579--------------思维(二分)
题意:给定n个数,两两互减取绝对值,一共有n*(n-1)/2个数,问中间值是多少解析:二分答案d先给原序列排序,然后根据公式a[j]-a[i]<=d (j>=i)那么a[j]<=a[i]+d所以我们二分一下a[i]+d 在整个序列的位置,因为(j>=i) 所以还要减去<a[i]的数#include<iostream>#include<algorithm>#include<cstdio>using namespace ..原创 2020-09-29 20:01:22 · 130 阅读 · 0 评论 -
Drying POJ - 3104-------------------思维(二分)
题意:有n件衣服,每件衣服都有ai点水份。现在你可以自然烘干衣服每一分钟减少1点水份,或者你可以选择烘干机,每次烘干k水份,问你最少需要多少时间可以把所有衣服烘干解析:二分枚举答案假设一件衣服烘干需要x分钟,烘干机用了y分钟,那么自然干需要x-y分钟所以: (x-y)+y*k>=a[i]那么: y>=(a[i]-x)/(k-1)假设二分答案为x分钟那么对于<x分钟的都可以置为0,因为他们在x分钟内已经可以自然风干了然后计算y即可,根据y值调动上下限注意的是当k=...原创 2020-09-29 18:16:45 · 169 阅读 · 0 评论 -
51NOD 1686 第K大区间-----------------------思维(二分+双指针+套路题)
解析:套路! 套路! 套路! 一定要谨记!!!!!!!!套路二分枚举答案t。二分check的条件就是判断有多少个区间的众数>t对于check的判断我详细说明一下(利用双指针) 先枚举右端点假设有个序列: 1 2 3 1 4 3假设二分的t=1;那么对于[1,4]区间的众数是num[1]=2 那么有多少个区间满足num[1]=2呢?(这边的套路就要开始了)我们发现[1,5],[1,6]都满足条件,所以当区间的众数>t 则产生的贡献就是n-i+1然后我们需要移动左.原创 2020-09-14 19:57:41 · 177 阅读 · 0 评论 -
问题 I: Two Famous Companies-----------思维(二分+MST)
题意:给定n个点,m条边,两个点之间用线连接起来。要么是联通的线,要么是移动的线,问必须要选k条电信线的最小生成树是多少解析:再求生成树的时候会遇到两种情况。 cnt为选择电信线的个数第一种 k>cnt 说明我们在选择边的时候,电信线的权值都很大,所以选的很少第二种 k<cnt 说明我们在选择边的时候,电信线权值很小,我们都会优先选择处理的方法就是对于第一种我们可以给电信线权值都减小,使其得到满足对于第二种我们可以给电信线权值都增加,使其得到满足所以我们二分出一个增量mi..原创 2020-09-11 14:05:51 · 229 阅读 · 0 评论 -
Dropping tests-------------------------------思维(0/1分数规划+二分)
解析:0/1分数规划模板题二分最大值midai-bimid>=0。通过上面公式算出t[i]=ai-bimid,然后排序t数组 删除前k个值,算出总和如果总和<0 说明mid 大了,这时候R=mid否则 说明mid小了,这时候L=mid#include <iostream>#include<algorithm>using namespace std;int n,k;int a[10005],b[10005];double res[10005]...原创 2020-08-24 17:58:17 · 152 阅读 · 0 评论 -
牛牛找子集---------------------------思维(二分+贪心)
解析:二分枚举多少组满足题意。假设二分t组那么每一组的个数就是sum/t 这就是答案了#include <bits/stdc++.h>using namespace std;int n,k;vector<int> v;map<int,int> cnt;bool check(int t,int k){ int sum=0; for(int i=0;i<=100000;i++) { if(cnt[i]==.原创 2020-08-15 19:39:02 · 135 阅读 · 0 评论 -
匹配统计----------------------------思维(二分+hash)
解析:把A和B串哈希。然后枚举A串的后缀,然后二分A串和B串匹配的长度即可时间复杂度O(nlogn)#include<bits/stdc++.h>using namespace std;typedef unsigned long long ull;const int N=2e5+10000;char a[N],b[N];ull P=131;ull h1[N],p1[N],h2[N],p2[N];int n,m,q,x;int cnt[N];ull get_h1(int..原创 2020-05-23 11:41:25 · 211 阅读 · 0 评论 -
B. Ternary String----------------------------------思维(二分)
#include<bits/stdc++.h>using namespace std;int t,n;string s;bool check(int x){ map<int,int > v; for(int i=0;i<x;i++) v[s[i]-'0']++; if(v[1]&&v[2]&&v[3]) return true; for(int i=1;i<n-x+1;i++) { v[s[i-1]-'0']-...原创 2020-05-19 00:13:34 · 330 阅读 · 0 评论 -
后缀数组----------------------------模板(hash+二分+最长公共前缀)
对于SA数组SA[i]=i:表示 i~n的后缀 的起始位置为i对于最长公共前缀我们可以hash+二分求解出来对于SA数组的排序,可以根据最长公共前缀后一个字符作为关键字比较#pragma GCC optimize(3,"Ofast","inline")#include<bits/stdc++.h>using namespace std;typedef unsigned long long ull;const int N=1e6+1000;ull h[N],p[N],P=13..原创 2020-05-16 11:17:38 · 261 阅读 · 0 评论 -
问题 F: 魔法石-------------------------思维(二分)
题目描述你习得了魔法,并学会了熟练运用魔法石。你得到了n颗魔法石,魔法石有两种属性,分别为火属性和水属性。你一开始得到的是这n颗魔法石的一个排列。定义这n颗魔法石释放出来的能量,为最长的属性相同的魔法石连续段的长度。作为一名熟练的魔法师,你还可以至多修改k个魔法石的属性。你现在想知道这n颗魔法石最多可以释放出多少能量。输入第一行为两个正整数n,k,表示魔法石的个数和最多可以修改的魔法石数...原创 2020-05-06 22:34:09 · 550 阅读 · 0 评论 -
113. 特殊排序--------------------------二分
解析:本题是交互题,所以题目已经把接口准备好了,只需要我们返回就行了所以一开始没有把关系给你,是通过compare 返回的类型来确定我们采用二分插入排序,二分已经插入的元素的位置,判断在哪个位置上。然后通过数组移位,使其移动到二分的位置// Forward declaration of compare API.// bool compare(int a, int b);// re...原创 2020-05-02 17:52:54 · 259 阅读 · 0 评论 -
102. 最佳牛围栏--------------------------思维(二分+套路题)
农夫约翰的农场由 N 块田地组成,每块地里都有一定数量的牛,其数量不会少于1头,也不会超过2000头。约翰希望用围栏将一部分连续的田地围起来,并使得围起来的区域内每块地包含的牛的数量的平均值达到最大。围起区域内至少需要包含 F 块地,其中 F 会在输入中给出。在给定条件下,计算围起区域内每块地包含的牛的数量的平均值可能的最大值是多少。输入格式第一行输入整数 N 和 F ,数据间用空格隔开...原创 2020-04-29 16:32:30 · 407 阅读 · 0 评论 -
阶乘------------------------------思维(数论+二分)
解析:分解N!质因数 和p的质因数为什么呢 ??例如N!=120 P=60那么N!=120=23 * 3 *5P=22 * 3 *5想要N!是p的倍数,那么N!必须存在一个和p分解的质因数要一样,且幂次一定要大于p分解质因数的幂次 才可以。那么我们就二分n#include<bits/stdc++.h>using namespace std;typedef lon...原创 2020-04-28 22:36:02 · 225 阅读 · 0 评论 -
密码系统-------------------------------思维(二分+哈希)
解析:本题只需解决一个问题,剩下模拟即可问题就是如何快速求解最长公共前缀。很经典的套路。我们先把长度为k的字符串哈希,然后二分求解最长公共前缀。然后最长公共前缀的下一位比较一下就可确定两个字符串的大小,然后剩下的模拟哈希即可。#include<bits/stdc++.h>using namespace std;typedef unsigned long long ull;...原创 2020-04-20 15:16:52 · 230 阅读 · 0 评论 -
聚会------------------------------------思维(二分)
解析:先给数组排序,然后直接二分枚举答案x。假设i位置到0号点距离>x 那么我们需要建立一个传送门,传送门的位置pos=a[i]+x。为什么是a[i]+x 因为我们从小到大遍历的,所以建后面,会给后面的点做贡献。如果一个点到0号点和到传送门的距离都大于x 那我我们需要调整上届,使得答案最优#include<bits/stdc++.h>using namespace s...原创 2020-04-18 11:26:38 · 147 阅读 · 0 评论 -
相似的子串--------------------------------------------思维(哈希+二分)
解析:题目本质让我们求解的是在主串中选出k个不相交的子串。这个子串的最长长度是多少。其实答案具有单调性,二分求解。我们首先字符串哈希预处理,然后二分答案判断部分:用两个哈希表分别记录长度为len的子串位置和长度为len的子串个数,分别记为V和T每次判断长度为len的子串,判断与上一个记录的位置是否合法,合法就更新V和T#include<bits/stdc++.h>us...原创 2020-04-11 15:51:02 · 146 阅读 · 0 评论 -
关于lower_bound( )和upper_bound( )的常见用法
lower_bound( begin,end,num):从数组的begin位置到end-1位置二分查找第一个(大于或等于num)的数字,找到返回该数字的地址,不存在则返回end。通过返回的地址减去起始地址begin,得到找到数字在数组中的下标。upper_bound( begin,end,num):从数组的begin位置到end-1位置二分查找第一个(大于num)的数字,找到返回该数字的地址,不...原创 2020-04-05 23:30:06 · 177 阅读 · 0 评论 -
问题 F: 放牛奶的冰箱--------------------------------------------思维(二分)
题目描述冬冬在古子城购买了一台冰箱,冰箱内部可以表示为高度为h,深度为1,宽度为2的矩阵,最初冰箱底部只有一个架子,但冬冬可以在任何一个格子顶部放隔板,隔板的宽为2,不占用任何空间,将冰箱内部分隔成上、下两部分。冬冬有n瓶牛奶要按顺序放入冰箱里。第i瓶牛奶的高度是ai,深度和宽度均为1。如果架子上方的相应空间至少与瓶子一样高,他可以在一个架子上放一瓶牛奶,他不能将两瓶牛奶叠在一起(如果它们之间...原创 2020-03-30 12:37:33 · 262 阅读 · 0 评论 -
问题 G: 电脑游戏------------------------------------二分(只要能枚举且具有单调性)
题目描述小明在玩电脑游戏。游戏中总共有q个关卡。每个关卡的开始,他都会有k滴血,初始得分0分,他需要抵抗n波怪物攻击,如果最终玩家的血量严格大于0滴则为胜利(等于0滴也不算胜利)。每波怪物攻击共有两种,第一种攻击是扣a滴血,但可以加1分,第二种攻击是扣b滴血(b<a),不能获得分数。现在,他想知道每一关是不是能玩出来(每一关共有n波攻击,对于每一波攻击,他要么选择抵抗第一种要么选择抵抗第二...原创 2020-03-29 11:47:40 · 436 阅读 · 0 评论 -
问题 J: Buy an Integer-------------------------二分
题目描述Takahashi has come to an integer shop to buy an integer.The shop sells the integers from 1 through 109. The integer N is sold for A×N+B×d(N) yen (the currency of Japan), where d(N) is the number...原创 2020-03-16 23:21:43 · 234 阅读 · 0 评论 -
问题 F: Tractor----------------------------dfs+二分
题目描述One of Farmer John’s fields is particularly hilly, and he wants to purchase a new tractor to drive around on it. The field is described by an N x N grid of non-negative integer elevations (1 <...原创 2020-02-16 18:18:43 · 332 阅读 · 0 评论 -
通信线路-------------------------------图论(最短路+二分+双端队列广搜)
在郊区有 N 座通信基站,P 条 双向 电缆,第 i 条电缆连接基站Ai和Bi。特别地,1 号基站是通信公司的总站,N 号基站位于一座农场中。现在,农场主希望对通信线路进行升级,其中升级第 i 条电缆需要花费Li。电话公司正在举行优惠活动。农产主可以指定一条从 1 号基站到 N 号基站的路径,并指定路径上不超过 K 条电缆,由电话公司免费提供升级服务。农场主只需要支付在该路径上剩余的电缆...原创 2020-02-13 13:52:17 · 319 阅读 · 0 评论 -
E. The Contest-------思维+LIS
A team of three programmers is going to play a contest. The contest consists of n problems, numbered from 1 to n. Each problem is printed on a separate sheet of paper. The participants have decided to...原创 2020-01-30 21:53:15 · 351 阅读 · 0 评论 -
D. Salary Changing----------思维/二分(稍难)
You are the head of a large enterprise. n people work at you, and n is odd (i. e. n is not divisible by 2).You have to distribute salaries to your employees. Initially, you have s dollars for it, and...原创 2020-01-29 15:54:30 · 399 阅读 · 0 评论 -
D. Minimax Problem------二分+状态压缩/思维
You are given n arrays a1, a2, …, an; each array consists of exactly m integers. We denote the y-th element of the x-th array as ax,y.You have to choose two arrays ai and aj (1≤i,j≤n, it is possible ...原创 2020-01-18 12:02:17 · 393 阅读 · 0 评论 -
二分搜索的最大值最小化与最小值最大化
求最小值的最大值,二分!!!原创 2020-01-17 15:34:25 · 442 阅读 · 0 评论