随笔分类 -  基本算法:倍增

摘要: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+( 阅读全文
posted @ 2022-02-26 20:06 __iostream 阅读(33) 评论(0) 推荐(0) 编辑
摘要:动态维护01序列中第k个1的位置 为了配合树状数组 采用枚举每一位的方式来构成长度 #include <iostream> #include <cstdio> #include <cstring> #include <cmath> using namespace std; const int N=1 阅读全文
posted @ 2022-02-08 10:37 __iostream 阅读(36) 评论(0) 推荐(0) 编辑
摘要:定义一个序列的价值为序列中m对数的差的平方的和的最大值 给定一个序列 求把这个序列至少分成多少段,才能保证每一段的价值都不超过T 首先可以想到是答案具有单调性 二分答案 但是不好检验 所以我们需要换思路 根据排序不等式,这个值是将这个数组后排序后每次取最大的和最小的来累加答案 再经过分析可以发现 我 阅读全文
posted @ 2021-12-30 15:08 __iostream 阅读(33) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示