随笔分类 -  二分

二分+二分答案
摘要:https://ac.nowcoder.com/acm/contest/56825/E 题意 给你 $10^{10}$ 个数(数组a n 个数,数组b m 个数,数是 a*b 的集合),有 $Q$ (Q为常数)个询问,每次问你第 $x$ 小的数是多少 思路 最暴力的思路肯定是把所有数放在一起,然后排 阅读全文
posted @ 2023-05-13 18:02 starlightlmy 阅读(41) 评论(0) 推荐(0)
摘要:####链接 http://acm.hdu.edu.cn/showproblem.php?pid=6231 ####题意 给你一个数列$a[1...n]$,对于a中的每个长度大于等于k的区间,把其中第k大的数加进数列b中,求数列b中第m大的数。 ####solution #####二分答案的思想由来 阅读全文
posted @ 2022-05-19 16:17 starlightlmy 阅读(45) 评论(0) 推荐(0)
摘要:###D 首先明确题意 是每次组建的一支队伍中的兵来自同一种种类,这样简化了很多题意 容易发现,如果$\frac{h_{i}}{D}> \frac{H}{\frac{C}{c_i}*d_i}$,那么答案就一定存在,反之如果所有i (\(i\in [1,n]\)) 都不满足,那么输出-1 确定答案存在 阅读全文
posted @ 2022-03-23 23:51 starlightlmy 阅读(35) 评论(0) 推荐(0)
摘要://分数规划 //求形如 sigma(a[i])*w/sigma(b[i])*w 的极值 //这里w取值为0或1,代表这一项选或不选 #include<bits/stdc++.h> #define ll long long using namespace std; const int N = 1e5 阅读全文
posted @ 2021-10-05 17:49 starlightlmy 阅读(58) 评论(0) 推荐(0)
摘要:加入限制:数组连续子段的长度>=x 数据范围 1<=n<=1e5 枚举子段两端点显然会tle 方法:二分答案+前缀和 对答案进行二分(solve()函数),每次对答案进行check()(令check(ans)==1表示数组存在平均值>=ans的连续子段,否则不存在) 直到不满足二分的端点r-l>e 阅读全文
posted @ 2021-07-27 13:00 starlightlmy 阅读(186) 评论(0) 推荐(0)
摘要://二分查找//也可以用lower_bound/upper_bound实现 #include<cstdio>#include<algorithm>using namespace std; const int N = 1000001;int n,m;int a[N],b[N]; int find(in 阅读全文
posted @ 2021-03-28 13:10 starlightlmy 阅读(43) 评论(0) 推荐(0)
摘要://构造一个单调的函数,且函数值容易求,这时问题的解可以通过二分来求出 #include<bits/stdc++.h> #define ll long long using namespace std; const int N = 1000001; int n,m; int a[N]; ll pre 阅读全文
posted @ 2021-03-28 13:05 starlightlmy 阅读(219) 评论(0) 推荐(0)