公园遛狗


题目


输入

输出

小白每出去玩一次,都对应输出一行,只包含一个整数,表示小白可以选出的公园得分和的最大值


输入样例

5 3
1 2 -3 4 5
1 2 3
2 2 -1
1 2 3

输出样例

2
-1

解题思路

这题是一题经典线段树的做法,我们是通过找一个分界点的前缀和后缀进行合并,有可能就是这个区域最大
然后我们就用线段树来维护这个区间最大

程序如下

#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>using namespace std;int n, m, k, a, b, p, s, w[500005];struct node
{long long sum, l, r, maxx;
}tree[2000001];long long read()
{char x = getchar();long long d = 1, l = 0;while(x < '0' || x > '9') {if(x == '-') d = -1;x = getchar();}while(x >= '0' && x <= '9') {l = (l << 3) + (l << 1) + x - 48;x = getchar();}return l * d;
}node add(node a, node b)
{node c;c.sum = a.sum + b.sum;c.l = max(a.l, a.sum + b.l);c.r = max(b.r, b.sum + a.r);c.maxx = max(max(a.maxx, b.maxx), a.r + b.l);return c;
}void pre(int k, int l, int r)
{if(l == r){tree[k].sum = w[l];tree[k].l = w[l];tree[k].r = w[l];tree[k].maxx = w[l];return;}int mid = (l + r) / 2;pre(k * 2, l, mid);pre(k * 2 + 1, mid + 1, r);tree[k] = add(tree[k * 2], tree[k * 2 + 1]);
}node ask(int k, int x, int y, int l, int r)
{if(x <= l && r <= y) return tree[k];int mid = (l + r) / 2;if(y <= mid) return ask(k * 2, x, y, l, mid);if(mid + 1 <= x) return ask(k * 2 + 1, x, y, mid + 1, r);node a, b, c;a = ask(k * 2, x, y, l, mid);b = ask(k * 2 + 1, x, y, mid + 1, r);c = add(a, b);return c;
}void change(int k, int x, int l, int r, int d)
{if(l == r){tree[k].sum = d;tree[k].l = d;tree[k].r = d;tree[k].maxx = d;return;}int mid = (l + r) / 2;if(x <= mid) change(k * 2, x, l, mid, d);if(mid + 1 <= x) change(k * 2 + 1, x, mid + 1, r, d);tree[k] = add(tree[k * 2], tree[k * 2 + 1]);
} int main()
{n = read();m = read();for(int i = 1; i <= n; ++i)w[i] = read();pre(1, 1, n);for(int i = 1; i <= m; ++i){k = read();if(k == 1){a = read();b = read();if(a > b) swap(a, b);node temp = ask(1, a, b, 1, n);printf("%d\n", temp.maxx);}else if(k == 2){p = read();s = read();change(1, p, 1, n, s);}}return 0;
}

【YbtOJ 线段树 - 2】公园遛狗相关推荐

  1. 公园遛狗 / 小白逛公园【线段树】

    >Link ybtoj公园遛狗 luogu P4513 >解题思路 这道题我做的时候只想到了build.insert怎么写,ask看了书以后写的(真的好巧妙T) 单点修改+区间查询使我们想 ...

  2. 【ybt高效进阶4-4-3】【luogu P4513】公园遛狗 / 小白逛公园

    公园遛狗 / 小白逛公园 题目链接:ybt高效进阶4-4-3 / luogu P4513 题目大意 给你一个序列,要维护两个操作. 单点修改和在一个区间中找权值最大的子区间的权值. 思路 其实这个是很 ...

  3. video safari不支持吗_您支持吗? 公园遛狗纳入 “不文明行为黑名单”

    近日,北京市发布了"不文明游园行为黑名单",此次发布的不文明游园行为黑名单包括翻越围墙.栏杆.绿篱,在禁烟区吸烟,在非游泳区游泳,在非滑冰区滑冰,在非钓鱼区钓鱼,在非体育运动场所踢 ...

  4. 公园遛狗(小 * 逛公园)

    P4513 小白逛公园 线段树求最大子段和,由于是动态的且n,m均高达1e5,因此想到线段树 #include<bits/stdc++.h> using namespace std; #d ...

  5. YbtOJ#662-交通运输【线段树合并,树状数组】

    正题 题目链接:http://www.ybtoj.com.cn/contest/122/problem/2 题目大意 给出nnn个点的一棵有根树,对于每个xxx求,删除点xxx后修改某个点的父节点(修 ...

  6. YbtOJ#763-攻城略池【线段树合并】

    正题 题目链接:http://www.ybtoj.com.cn/problem/763 题目大意 给出nnn个点的一棵树,每个di=0d_i=0di​=0的点每秒会产生一个士兵往根节点走,走到一个节点 ...

  7. YbtOJ#752-最优分组【笛卡尔树,线段树】

    正题 题目链接:http://www.ybtoj.com.cn/problem/752 题目大意 nnn个人,每个人有cic_ici​和did_idi​分别表示这个人所在的队伍的最少/最多人数. 然后 ...

  8. YbtOJ#532-往事之树【广义SAM,线段树合并】

    正题 题目链接:https://www.ybtoj.com.cn/problem/532 题目大意 给出nnn个点的一个TrieTrieTrie树,定义SxS_xSx​表示节点xxx代表的字符串 求m ...

  9. YbtOJ#463-序列划分【二分答案,线段树,dp】

    正题 题目链接:https://www.ybtoj.com.cn/problem/463 题目大意 给出长度为nnn的序列A,BA,BA,B.要求划分成若干段满足 对于任何i<ji<ji& ...

最新文章

  1. qq音乐 android pad版,QQ音乐HD(com.tencent.qqmusicpad) - 4.12.1.4 - 应用 - 酷安
  2. HTML5-Canvas 图形变换+状态保存
  3. 2008_11_05_星期三
  4. 2018年各大互联网前端面试题五(今日头条)
  5. android软件perthbus,Transit
  6. Oracle完全手册,Oracle_11g+Oracle Sqldeveloper 安装完全手册(for win 7 64x)
  7. jquery 如何获取动态添加的元素
  8. safari 浏览器提示添加到主屏幕_Safari浏览器的秘密技能
  9. 软件工程大学大三课表_专业选修课 | 面向大二、大三同学的专业选修课全面介绍来啦!...
  10. Eclipse中代码自动提示功能设置
  11. 2020-06-21
  12. mac电脑安卓开发环境搭建
  13. 【java毕业设计】 基于java+SSH+JSP的保险业务管理系统设计与实现(毕业论文+程序源码)——保险业务管理系统
  14. 算法笔记(9)-随机森林算法及Python代码实现
  15. 关于使用js的setAttribute和getAttribute取dom属性在ie ff safri下的问题
  16. openwrt USB热插拔(hotplug)
  17. access函数的用法
  18. 创业失败的工程师内心依旧有代码
  19. 电容选型及常用值与作用的学习
  20. Talk预告 | 阿里巴巴达摩院算法工程师许贤哲:DAMO-YOLO:兼顾速度与精度的高效目标检测框架

热门文章

  1. 免安装mysql8.0
  2. 海底捞和饿了么合作了,你会来一份“火锅外卖”吗?
  3. 大数据解读:穹顶之下,谁在关注雾霾
  4. SSR服务端渲染(nuxt重构项目)
  5. XJTU 新闻英语阅读重点词汇汇总
  6. revit图纸导出dxf文件批量修改
  7. 为什么我说,卖货直播平台开发的定位可以从这方面入手
  8. 科维的时间管理法—《可以量化的管…
  9. 论文解读:《利用深度学习方法识别RNA伪尿苷位点》
  10. 只有python扩展库才需要导入以后才能使用其中对象_只有Python扩展库才需要导入以后才能使用其中的对象,Python标准库不需要导入即可使用其中的所有对象和方法。...