
二分尺取
zijiang.yang
没什么意思的人!
展开
-
D.Restore Permutation
题目链接题意:给你一个序列s:s代表的是p[i]前小于p[i]的数组加起来的和,比如 3 2 1 的s:0 0 0题解:我们每次一定可以确定的是最后一位的数,因为最后一位前面一定有所有小于它的数,所以我们可以确定最后一位的数,我们确定最后一位后,把他从数组中删去,然后在在接下来的数组中求最后一位的值,因为是最后一位对前面的值并不造成影响所以二分查找答案即可AC代码:#inclu...原创 2020-01-03 09:17:58 · 201 阅读 · 0 评论 -
愤怒的牛:二分答案
传送门题解:把数组排一下序,然后枚举当前的距离与mid的关系,当大于等于mid时,牛的数量++,然后二分枚举答案即可AC代码:#include<bits/stdc++.h>using namespace std;const int maxn=1e5+5;int n,k;int a[maxn];bool check(int mid){ int ans=1,...原创 2019-12-30 20:23:31 · 556 阅读 · 0 评论 -
poj 2566 前缀和+规律进行尺取
传送门二分尺取+前缀和,需要按一定的规律,不然尺取到一段后,反而缩,就会出现问题,所以需要先记录每一个点的编号,然后求前缀和,然后进行排序,然后再进行尺取AC代码:#include<cstdio>#include<algorithm>#include<cstring>#include<vector>#include<cstdl...原创 2019-12-04 18:25:42 · 238 阅读 · 0 评论 -
尺取(poj3320)
题意:有一本p页厚的书,每一页有一个知识点ai,每一页的知识点可能重复,问最少连续看多少页能把所有知识点看完?题解:一道尺取题:首先我们的尺子是know_num个知识点,把厚度为p的书看作一根带有知识点的绳子,当量够know_num个知识点时,我们会得到一个长度res,我们不断的去量取,直到把整根绳子量完,就可以得到最少看的页数,注意这一题需要用到离散化,离散化可以写二分的,也可以用...原创 2019-12-04 13:49:44 · 206 阅读 · 0 评论 -
二分 River Hopscotch (poj 3258)
一道二分答案的问题,我知道做法,但是方案我也不知道 为啥呢么分,可能脑子不是太好使,先记录下来回头打打思路题,再来想这个题传送门AC代码:#include<cstdio>#include<algorithm>using namespace std;const int maxn=1e5+5;int a[maxn];int L,n,m;bool check...原创 2019-12-05 19:46:09 · 119 阅读 · 0 评论 -
POJ 1905 二分查找答案
一道精度很高的问题,虽然也不是很难题解:求出r=(L^2+4h^2)/8h s=(2r*arcsin(L/2r))二分区间查找h和真正的s对比当l-r>exp不满足时候跳出求解答案注意:因为精度很高所以这里的折半不应该用/2.0而是*0.5,*0.5的精度更高AC代码:#include<cstdio>#include<algorithm>#...原创 2019-12-05 11:38:26 · 187 阅读 · 0 评论 -
HDU 2199(二分查找答案:简单入门题)
一道简单入门题:传送门:二分查找答案题解:先观察函数:f(x)=8*pow(x,4) + 7*pow(x,3) + 2*pow(x,2) + 3*x + 6可以看出这个函数是单调递增的函数,在[0,100]这个区间,所以当ans>=f(0)&&ans<=f(100)这个区间内是有答案的,然后题目要求保留四位小数,我们应该在[0,100]二分答案,当l-r...原创 2019-12-04 19:23:20 · 491 阅读 · 0 评论 -
二分优化:单调递增子序列(二)NYOJ(214)
例题:题解:该题很数据量很大用传统的动态规划算法写,会TLE,所以需要用二分优化算法,我们可以定义一个栈Stack[],可以说是单调栈,利用二分查找,保持栈的单调行,从一层for循环里找到每一个ans所在的位置以样例1为例:1 9 10 5 11 2 13Stack[1]=a[0]先把第一个值入栈1234519101113这是最大的递增子序列,...原创 2019-10-28 20:41:17 · 202 阅读 · 0 评论 -
Poj---3104(经典二分+数学计算)
题解://数学计算+二分操作详解//设对于每件衣服我们吹k次风//mid=FinishTime,mid-k=自然风干的时间//设每次吹m的水量//故我们吹干的总水量=mid-k+k*m>=a[i]=每件衣服的水量//得到每件衣服的最小吹风次数k=(a[i]-mid)/(m-1)//由于在mid时间内我们最多吹风次数为mid//所以我们要让sum尽可能的小而且可以满足操作...原创 2019-07-30 10:01:27 · 326 阅读 · 0 评论 -
二分
二分的范围一定要确定好上限不能随意确定,下限也不能随意确定。一定要将决策代码敲好 不然会将陷入循环状态确定好范围很重要一代码:#include<cstdio>#define ll long longll n,m;ll a[1000000];bool slove_x(ll mid){ ll sum=0,len=1; for(ll i=1; i<...原创 2019-04-10 20:21:06 · 104 阅读 · 0 评论 -
E:二分+数学计算
题意:最让HSQ学长头疼的就是洗衣服了。洗完之后,每件衣服都有一定单位水分,在不使用烘干器的情况下,每件衣服每分钟自然流失1个单位水分,但如果使用了烘干机则每分钟流失K个单位水分。令人遗憾是HSQ所在的宿舍楼只有1台烘干机,而每台烘干机同时只能烘干1件衣服,请问要想烘干N件衣 服最少需要多长时间?输入第一行输入N,表示有N件衣服,第二行输入N件衣服的水分ai,第三行表示烘干机每分钟烘干水分...原创 2019-04-01 19:48:47 · 406 阅读 · 0 评论 -
二分查找
二分查找适用于有序的序列列如:[0,100) 我们要要找到10的位置,这里我们只考虑区间里的整数共有100个数我们要找到10,我们先定义一个num[100]的数组,给该数组中的每个元素都附上100个数每个数所代表的值int setx(){for(int i=0;i<100;i++){num[i]=i;}}接下来可以进行查找先找到0-100的中间值即mid=(0+100)/...原创 2019-02-26 21:18:29 · 310 阅读 · 0 评论