求助莫队
  • 板块灌水区
  • 楼主Neutralized
  • 当前回复5
  • 已保存回复5
  • 发布时间2022/3/6 16:58
  • 上次更新2023/10/28 07:08:04
查看原帖
求助莫队
538609
Neutralized楼主2022/3/6 16:58

为什么在某些题中,需要将左指针初始置为 11 ,而某些题不用?

e.g: ABC242 G,这题需要初始为1:

ri cl(1),cr(0),tl,tr;
//here, correct initial cl is 1 instead of 0
    for(ri i(1);i<=q;++i){
        tl=qr[i].l,tr=qr[i].r;
        while(cl>tl) temp+=(cnt[a[--cl]]&1),++cnt[a[cl]]; // add(--cl);
        while(cl<tl) --cnt[a[cl]],temp-=(cnt[a[cl++]]&1); // del(cl++);
        while(cr<tr) temp+=(cnt[a[++cr]]&1),++cnt[a[cr]]; // add(++cr);
        while(cr>tr) --cnt[a[cr]],temp-=(cnt[a[cr--]]&1); // del(cr--);
        ans[qr[i].ind]=temp;
    }

(刚刚VP ABC242因为这个挂了G题 600600
如果cl初值为 00 ,样例的所有询问输出比答案小 11
所以我就直接加了1交上去WA了三个
然后一直到最后都没改出来


而对于大部分题,经刚才测试,不初始化为1也没有问题
测试的类型包括了:
数据很弱的莫队
数据比较强的莫队
套了值域分块的莫队
需要卡常的带修莫队

所以是更新的写法区别导致了初始值的限制吗?
求指教

2022/3/6 16:58
加载中...