
二分
constbh
这个作者很懒,什么都没留下…
展开
-
51Nod 1686(第K大区间)
题意:中文题,定义一个区间的值为其众数出现的次数。现给出n个数,求将所有区间的值排序后,第K大的值为多少。离散化二分答案加尺取判断#include#include#includeusing namespace std;const int maxn = 100006;typedef long long ll;int len;int num[maxn];int tmp[ma原创 2017-08-18 20:48:07 · 345 阅读 · 0 评论 -
hdu 5875(ST&&二分区间)
题意:给一个序列,有N个数字和M次询问。每次询问给一个区间,问这个区间从l开始一直对L后面的数组取模,一直到R。分析:一个较小的数字对一个较大的数字取模,值不发生改变。所以每次只要找最近的比自己小的数字取模更新答案即可。用RMQ维护区间最小值。每次查询一个区间就在这个区间内进行二分。如果左区间有比l小的数字则再次缩小区间,知道某个小区间的值全部大于当前的l或者区间长度变为1,则对这个数字取模。原创 2017-08-12 10:33:55 · 281 阅读 · 0 评论 -
51Nod1257(初学01分数规划)
基本的01分数规划问题#include#includeusing namespace std;typedef long long ll;const int maxn = 50005;const double eps = 1e-9;ll gcd(ll x,ll y){return y ? gcd(y,x % y) : x;}struct node{ int w; in原创 2017-08-23 19:05:21 · 374 阅读 · 0 评论 -
codeforces888E(折半二分)
把序列分为前一半和后一半,然后壮压得出两部分数字可以得到的所有和,存在两个vector里,然后枚举第一个vector中的数字,二分查找第二部分满足条件的最大值,然后更新最大值。#include#include#includeusing namespace std;typedef long long ll;vectorg1,g2;ll num[40],t[40];int main(原创 2017-11-12 20:21:36 · 453 阅读 · 0 评论 -
newcoder猴子吃香蕉
题目描述有n只猴子,第i只猴子每过xi小时会连续吃香蕉yi小时。猴子从第二次开始每次休息结束后这只猴子连续吃香蕉的时间会增加zi小时。给定n只猴子,每一只的xi,yi,zi,以及时间t,求在前t小时中,所有猴子共吃了多少小时。 对于一只猴子来说是这样的:从第1小时开始: 休息xi小时( 1 -> xi ) 吃yi小时( xi + 1 -> xi + yi )原创 2017-11-17 21:18:32 · 505 阅读 · 0 评论