警示后人

P1253 扶苏的问题

zpy12345 @ 2024-12-19 21:32:03

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 请试着优化读入与输出速度


by hard_shuati @ 2024-12-20 15:30:27

thX


|