社区讨论
WA 9pts求调
P4513小白逛公园参与者 3已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @m5we49nk
- 此快照首次捕获于
- 2025/01/14 19:29 去年
- 此快照最后确认于
- 2025/11/04 11:37 4 个月前
CPP
// Problem: P4513 小白逛公园
// Contest: Luogu
// URL: https://www.luogu.com.cn/problem/P4513
// Memory Limit: 128 MB
// Time Limit: 1000 ms
//
// Powered by CP Editor (https://cpeditor.org)
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 500010;
int n , m , b[N] , op , x , y;
struct node {
int l , mid , r , sum , maxl , maxr , maxx;
} a[4 * N] , g;
void push_up (node &id , node &l , node &r) {
id.sum = l.sum + r.sum;
id.maxl = max (l.maxl , l.sum + r.maxl);
id.maxr = max (r.maxr , r.sum + l.maxr);
id.maxx = max (l.maxx , r.maxx);
id.maxx = max (id.maxx , l.maxr);
id.maxx = max (id.maxx , r.maxl);
id.maxx = max (id.maxx , id.maxl);
id.maxx = max (id.maxx , id.maxr);
id.maxx = max (id.maxx , l.maxr + r.maxl);
return;
}
void build (int l , int r , int id) {
a[id].l = l; a[id].r = r;
if (l == r) {
a[id].sum = b[l];
a[id].maxl = a[id].maxr = a[id].maxx = a[id].sum;
return;
}
a[id].mid = (l + r) / 2;
build (l , a[id].mid , id * 2);
build (a[id].mid + 1 , r , id * 2 + 1);
push_up (a[id] , a[id * 2] , a[id * 2 + 1]);
return;
}
void change (int id) {
if (a[id].r < x || a[id].l > x) return;
if (a[id].l == a[id].r) {
a[id].maxl = a[id].maxr = a[id].maxx = a[id].sum = y;
return;
}
change (id * 2); change (id * 2 + 1);
push_up (a[id] , a[id * 2] , a[id * 2 - 1]);
}
node find (int id) {
if (a[id].l > y || a[id].r < x) return g;
if (a[id].l >= x && a[id].r <= y) return a[id];
if (x > a[id].mid) return find (id * 2 + 1);
if (y <= a[id].mid) return find (id * 2);
node l = find (id * 2) , r = find (id * 2 + 1) , k;
push_up (k , l , r);
return k;
}
signed main () {
cin >> n >> m; g.l = g.r = -1;
for (int i = 1;i <= n;i ++) {
cin >> b[i];
}
build (1 , n , 1);
while (m --) {
cin >> op >> x >> y;
if (op == 1) {
if (x > y) swap (x , y);
cout << find (1).maxx << '\n';
}
else {
change (1);
}
}
return 0;
}
回复
共 3 条回复,欢迎继续交流。
正在加载回复...