题意:

给你一个序列,找两个长度为 k 且没有重合区间的数使得其和最大

解析:

线段树,就是把起点为 i 长度为 k 的和预处理出来,再枚举a,与a线段不重合的,后面的部分用线段树来找最大位置,总复杂度O(nlog(n))O(nlog(n))。

mymy codecode

#include <cstdio>
#include <cstring>
#include <algorithm>
#define ls (o<<1)
#define rs (o<<1|1)
#define lson ls, L, M
#define rson rs, M+1, R
using namespace std;
typedef long long ll;
const int INF = 0x3f3f3f3f;
const int N = 2e5 + 10;ll sumv[N<<2], x[N];void build(int o, int L, int R) {if(L == R) {sumv[o] = x[L];return ;}int M = (L+R)/2;build(lson);build(rson);sumv[o] = sumv[ls] + sumv[rs];
}ll query(int o, int L, int R, int ql, int qr) {if(ql <= L && R <= qr)return sumv[o];int M = (L + R)/2;ll ret = 0;if(ql <= M) ret += query(lson, ql, qr);if(qr > M) ret += query(rson, ql, qr);return ret;
}struct Segment {int L, R;ll sum;
} s[N];ll maxv[N<<2];
int posv[N<<2];
void pushUp(int o) {if(maxv[ls] >= maxv[rs]) {maxv[o] = maxv[ls];posv[o] = posv[ls];}else {maxv[o] = maxv[rs];posv[o] = posv[rs];}
}void build2(int o, int L, int R) {if(L == R) {maxv[o] = s[L].sum;posv[o] = s[L].L;return ;}int M = (L + R)/2;build2(lson);build2(rson);pushUp(o);
}ll _maxv;
int site;
void find(int o, int L, int R, int ql, int qr) {if(ql <= L && R <= qr) {if(_maxv < maxv[o]) {_maxv = maxv[o];site = posv[o];}return ;}int M = (L+R)/2;if(ql <= M) find(lson, ql, qr);if(qr > M) find(rson, ql, qr);
}int n, k;
int main() {while(scanf("%d%d", &n, &k) != EOF) {for(int i = 1; i <= n; i++)scanf("%lld", &x[i]);build(1, 1, n);for(int i = 1; i <= n - k + 1; i++) {s[i].L = i, s[i].R = i+k-1;s[i].sum = query(1, 1, n, s[i].L, s[i].R);}int last = n-k+1;build2(1, 1, last);int a, b; ll maxSum = -INF;for(int i = 1; i < last; i++) {_maxv = -INF;find(1, 1, last, s[i].R+1, last);if(maxSum < s[i].sum + _maxv) {maxSum = s[i].sum + _maxv;  a = i, b = site;}}printf("%d %d\n", a, b);}return 0;
}

CodeForces 332B Maximum Absurdity(线段树单点更新)相关推荐

  1. 【CodeForces 332B --- Maximum Absurdity】递推

    [CodeForces 332B --- Maximum Absurdity]递推 题目来源:点击进入[CodeForces 332B - Maximum Absurdity] Description ...

  2. [CodeForces 332B]Maximum Absurdity[DP]

    题目链接: [CodeForces 332B]Maximum Absurdity[DP] 题意分析: 寻找两个不重叠的长度为k的子串,使得它们之和最大. 解题思路: 第一想法是,处理出从这个点开始,长 ...

  3. HDUOJ----1166敌兵布阵(线段树单点更新)

    敌兵布阵 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  4. poj 2892---Tunnel Warfare(线段树单点更新、区间合并)

    题目链接 Description During the War of Resistance Against Japan, tunnel warfare was carried out extensiv ...

  5. HDU - 1166敌兵布阵+HDU-1754 I Hate It (线段树单点更新——累加/最大值)

    线段树单点更新,模板题 HDU1166 敌兵布阵 C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和T ...

  6. 【原创】tyvj1038 忠诚 计蒜客 管家的忠诚 线段树(单点更新,区间查询)...

    [原创]tyvj1038 忠诚 & 计蒜客 管家的忠诚 & 线段树(单点更新,区间查询) 最简单的线段树之一,中文题目,不翻译.... 注释讲的比较少,这已经是最简单的线段树,如果看不 ...

  7. FZU 2297 Number theory【线段树/单点更新/思维】

    Given a integers x = 1, you have to apply Q (Q ≤ 100000) operations: Multiply, Divide. Input First l ...

  8. CDOJ 1073 线段树 单点更新+区间查询 水题

    H - 秋实大哥与线段树 Time Limit:1000MS     Memory Limit:65535KB     64bit IO Format:%lld & %llu Submit S ...

  9. CodeforcesBeta Round #19 D. Points 离线线段树 单点更新 离散化

    题目链接: http://codeforces.com/contest/19/problem/D 题意: 有三种操作"add x y"往平面上添加(x,y)这个点,"re ...

最新文章

  1. 你了解计算机系统的层次结构吗?计算机语言怎么发展的?
  2. 4G EPS 中的小区选择
  3. 三种Target Encoding方式总结
  4. GNU C中的零长度数组
  5. 《微服务设计》(三)---- 集成
  6. SpringSecurity注销功能
  7. 从李一男,到美女博士姚婷,任正非:要把中国的天才,留在中国
  8. 500万数据mysql_mysql 单表500万数据经过处理后新增到新表
  9. qt mysql分页控件_Qt分页布局与切分窗口的实现
  10. 深入理解IntentService
  11. radius服务器mac_连如何抵御MAC攻击都不知道 过年还如何抵御三姑六婆的魔法攻击...
  12. 【转载】斐讯K2P B1刷入金梅林固件,加koolproxy、S-S R等【V1.0尝鲜版】
  13. 【免费领取】石杉架构班Kafka消息中间件内核源码课程
  14. hotmail邮箱设置
  15. warning: variable ‘a‘ set but not used [-Wunused-but-set-variable]
  16. 蓝牙「5.0」和「4.2」的区别???
  17. TOJ 5238: C实验:变量交换函数
  18. 2021支付宝集五福最新最全攻略:万能福沾沾福敬业福
  19. Android GMS认证项总结
  20. android 图库管理,Android调用系统图库

热门文章

  1. Matlab:绘制不同颜色的柱状图bar
  2. Nvidia AGX Xavier MAX9286 GMSL 载板
  3. Echars的下载和使用
  4. python干货:如何使用Python对音频进行特征提取?
  5. 计算机word.实训报告体会,计算机实训报告【五篇】.docx
  6. C语言-- 输出大写英文字母
  7. 第90届中国电子展聚焦行业新热点,拉动产业链上下游快速发展
  8. java 图片相似搜索_java获取两张图片的相似度
  9. 数值计算之 最小二乘法(3)最小二乘的矩阵解法
  10. 合并 2 个有序列表(关键词:有序列表/有序/合并/归并)