随笔分类 - 基本算法:倍增
摘要:void pre() { for(int i=1;i<=n;i++) f[i][0]=a[i]; int t=log(n)/log(2); for(int j=1;j<=t;j++) for(int i=1;i+(1<<j)<=n+1;i++) f[i][j]=max(f[i][j-1],f[i+(
阅读全文
摘要:动态维护01序列中第k个1的位置 为了配合树状数组 采用枚举每一位的方式来构成长度 #include <iostream> #include <cstdio> #include <cstring> #include <cmath> using namespace std; const int N=1
阅读全文
摘要:定义一个序列的价值为序列中m对数的差的平方的和的最大值 给定一个序列 求把这个序列至少分成多少段,才能保证每一段的价值都不超过T 首先可以想到是答案具有单调性 二分答案 但是不好检验 所以我们需要换思路 根据排序不等式,这个值是将这个数组后排序后每次取最大的和最小的来累加答案 再经过分析可以发现 我
阅读全文