随笔分类 - 基础算法 - 二分
摘要:这里采用的是求导+二分的做法。其中用到了多项式的单点求值算法,即:秦九韶算法,对于一个 N 次多项式的单点求值,只需要做 N 次乘法和 N 次加法即可求出在某点处的值。 代码如下 cpp include using namespace std; const double eps = 1e 6; in
阅读全文
摘要:题目大意:给定一个数轴和 N 个点,点有点权,现从 0 位置出发,初始时每次只能走 d 的距离,可以在数轴上任意位置停下,此时,会得到一个点权和。现允许支付 x 的费用,使得每次可以走的距离为一个范围 [max(1,d x), d+x]。求最少支付多少费用才能使得经过的点权和至少为 k。 题解:根据
阅读全文
摘要:题目大意:给定 M 个城市,每年会选出一个城市举办比赛,现给出前 N 年城市举办比赛的情况。在接下来的年份中,每年会在举办比赛次数最小的城市举办比赛,如果有很多城市举办次数均为最小值,则在编号最小的城市举办比赛。现给出 Q 个询问,每次询问第 K 年在哪个城市举办比赛。 题解: 首先,记录下每个城市
阅读全文
摘要:题目大意:给定一个长度为 N 的序列,求序列中连续区间最大的(或和加与和)是多少。 题解: 引理:任意两个数 $i, j$,若 $i j$,则在二进制表示下,i 对应的二进制串的字典序一定大于 j 对应的二进制串的字典序。 根据引理,若当前的最优解为 X,现考虑新加入一个元素 Y,有以下三种情况。
阅读全文
摘要:题目大意:给定一个长度为 n 的序列,给定一个恒定的 w,求解 $$\sum\limits_{i=1}^{n}min\{d[i],w\}$$ 题解:学会了对最小值和式的快速处理。 若在下标的角度考虑,显然每次询问都要 $O(n)$,复杂度爆炸。由于每次都是与一个常数比较,从值域角度考虑,等价于对小于
阅读全文
摘要:题目大意:给定一个 N 个点,M 条边的有向图,点有点权,边有边权,求该有向图中的一个环,使得环上点权和与环上边权和之比最大。 题解:0/1 分数规划思想,每次二分一个 mid,在新图上跑 spfa,将问题转化成是否存在负环即可。 代码如下
阅读全文
摘要:题目大意:给定一个 N 个点,M 条边的无向图,求从 1 号节点到 N 号节点的路径中,满足路径长度不大于 B 的情况下,经过顶点的点权的最大值最小是多少。 题解:最大值最小问题一般采用二分答案。这道题二分经过的点权,每次用二分出来的值跑最短路,在 dij 的过程中保证扩展的节点都是点权小于 mid
阅读全文
摘要:题目大意:给定一个长度为 N 的序列,定义两个数 $a[i],a[j]$ 相互看得见,意味着 $\forall k\in [i+1,j 1],a[k]\le a[i],a[k]\le a[j]$,求序列中共有多少对数可以看得见。 题解:将序列得每一个值面向左边排序,从左到右扫每一个数,为了避免重复计
阅读全文
摘要:给定 N 个物品组成的集合,每个物品有两个属性,$a_i,b_i$,求一组解 $x_i,1\le i \le n,x_i=0/1$,使得 $\frac{\Sigma_{i=1}^nx_ia_i}{\Sigma_{i=1}^nx_ib_i}$ 取得最大值。 代码如下
阅读全文
摘要:构造后缀数组$SA[\ ]$,即对一个字符串的每个后缀按照字典序排序后得到的数组,在这里采用哈希+二分的方式优化字符串的比较部分,使得复杂度由$O(n^2 logn)\rightarrow O(n log^2n)$。 代码如下 cpp include using namespace std; con
阅读全文
摘要:题目:给定一个序列a[ ],共 N 个正数,现有 M 次询问,每次给出一个 T ,需要求出最大的 k ,满足$\Sigma_{i=1}^ka[i] using namespace std; const int maxn=1e5+10; int sum[maxn],n,m; int main(){ s
阅读全文
摘要:题中给出了第 i 头牛前面有多少比它矮,如果正着分析比较难找到规律。因此,采用倒着分析的方法(最后一头牛的rank可以直接得出),对于第 i 头牛来说,它的rank值为没有被占用的rank集合中的第A[i]+1大数。所以,采用树状数组维护0 1序列(表示是否被占用)的前缀和,每次再用二分得出第K大数
阅读全文
摘要:对于在整数域上的二分答案问题的输出一般情况下是不会出现问题的,因为不会涉及到精度和类型转换。 但是对于在实数域上的二分时,可能出现一些奇奇怪怪的问题。 例题:POJ2018 1. 这道题是一个实数域上的二分,但是让输出的是整数。 2. 首先,对于在实数域上的二分来说,答案是会有无法避免的误差的,无论
阅读全文

浙公网安备 33010602011771号