警示后人
查看原帖
警示后人
920886
zpy12345楼主2024/12/19 21:32

1.请在push_down()时同时push_down()修改标记与增加标记,如果有修改标记的下放,请将下放到的节点的增加标记清零
引用大佬@QQzhi 的代码(注:t为加法标记,tt为修改标记)

  void pushdown(int id){
	if (tt[id]<+oo){
		tt[id*2]=tt[id*2+1]=tt[id];
		t[id*2]=t[id*2+1]=0;//很关键!!!
		a[id*2]=a[id*2+1]=tt[id];
		tt[id]=+oo;
	}
  t[id*2]+=t[id];
  t[id*2+1]+=t[id];
  a[id*2]+=t[id];
  a[id*2+1]+=t[id];
  t[id]=0;
}

2.注意在每次修改与查询时下放懒标记
3.查询时ans初值需要足够小!!!!
4.记得开 long long
5.如果你 TLE 请试着优化读入与输出速度

2024/12/19 21:32
加载中...