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

浙公网安备 33010602011771号