警示后人!仅AC on #11#12#13
查看原帖
警示后人!仅AC on #11#12#13
767588
_fwTransform_楼主2023/11/16 05:50

rt,可能是因为待修莫队和普通莫队不一样,在add和del的时候应该直接传递颜色,因为upd数组直接记录了颜色
Eg.错误示范Eg.错误示范

inline void add(int p)
{
	if(!cnt[a[p]])psa(cur);
	psa(cnt[a[p]]);
}
inline void del(int p)
{
	--cnt[a[p]];
	if(!cnt[a[p]])--cur;
}
···
	while(l<q[i].l)del(l++);
	while(l>q[i].l)add(--l);
	while(r<q[i].r)add(++r);
	while(r>q[i].r)del(r--);
	while(now<q[i].tim)
	{
		psa(now);
		int tmp=upd[now].p,c=upd[now].col;
		if(l<=tmp&&tmp<=r)del(tmp),add(c);
		swap(a[tmp],upd[now].col);
	}
	while(now>q[i].tim)
	{
		int tmp=upd[now].p,c=upd[now].col;
		if(l<=tmp&&tmp<=r)del(tmp),add(c);
		swap(a[tmp],upd[now].col);--now;
	}

因为有del(tmp),add(c)存在,tmp是位置,c是颜色
大家知道怎么修改吧()

2023/11/16 05:50
加载中...