扶苏的问题 题目描述 给定一个长度为 n n n 的序列 a a a,要求支持如下三个操作: 给定区间 [ l , r ] [l, r] [l,r],将区间内每个数都修改为 x x x。给定区间 [ l , r ] [l, r] [l,r],将区间内每个数都加上 x x x。给定区间 [ l , r ] [l, r] [l,r],求区间内的最大值。 输入格式 第一行是两个整
tag值存两个,一个覆盖值,一个累加值,再开一个变量存是否有覆盖值。因为覆盖值可能为零,也可以置为一个极小的值作为覆盖值是否存在的判断条件(如-1e18),除了注释的部分要注意一下以外,其余纯模板。 代码: #include <bits/stdc++.h>using namespace std;const int N = 1e6 + 5;#define int long
L u o g u l i n k Luogu~link Luogu link 分析: 线段树 主要在于懒标记下传 先覆盖 再加 CODE: #include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;typedef long long ll;cons