关于莫队
  • 板块灌水区
  • 楼主Hencecho
  • 当前回复6
  • 已保存回复6
  • 发布时间2021/11/11 08:31
  • 上次更新2023/11/4 00:55:20
查看原帖
关于莫队
169480
Hencecho楼主2021/11/11 08:31
inline void del(int now){(--vis[now])==0?mapp.set(now,0),mapp2.set(200000-now,0):0;}
inline void add(int now){(vis[now]++)==0?mapp.set(now,1),mapp2.set(200000-now,1):0;}

while (q[i].l<l) add(a[--l]);
while (q[i].r>r) add(a[++r]);
while (q[i].l>l) del(a[l++]);
while (q[i].r<r) del(a[r--]);

这样子的写法是正确的

inline void del(int now){(--vis[a[now]])?0:mapp.set(a[now],0),mapp2.set(200000-a[now],0);}
inline void add(int now){(vis[a[now]]++)?0:mapp.set(a[now],1),mapp2.set(200000-a[now],1);}

while (q[i].l<l) add((--l));
while (q[i].r>r) add((++r));
while (q[i].l>l) del((l++));
while (q[i].r<r) del((r--));

但这样就会莫名出锅

想知道为什么QAQ

2021/11/11 08:31
加载中...