P2894 [USACO08FEB]Hotel G 线段树模板
一个非常标准的线段树+懒惰标记
建议当做模板使用
#include<cstdio>
#include<algorithm>
#include<iostream>
using namespace std;
int len[400010],sum[400010],ml[400010],mr[400010],lazy[400010];
int n,q;
void pushup(int rt) {
//tell daddy about it
if (sum[rt<<1]==len[rt<<1]) ml[rt]=sum[rt<<1]+ml[rt<<1|1];//total equals to left plus right
else ml[rt]=ml[rt<<1];//no change
if (sum[rt<<1|1]==len[rt<<1|1]) mr[rt]=sum[rt<<1|1]+mr[rt<<1];
else mr[rt]=mr[rt<<1|1];
sum[rt]=max(max(sum[rt<<1],sum[rt<<1|1