专栏文章

AT_abc265_g

AT_abc265_g题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@miox0iq2
此快照首次捕获于
2025/12/03 02:32
3 个月前
此快照最后确认于
2025/12/03 02:32
3 个月前
查看原文
考虑不带修改怎么做。
fl,r,x,yf_{l,r,x,y} 表示 [l,r][l,r] 区间内满足 i<j,ai=x,aj=yi<j,a_i=x,a_j=y(i,j)(i,j) 数量,tl,r,xt_{l,r,x} 表示 [l,r][l,r] 区间内满足 ai=xa_i=xii 的数量。
假如你知道了 [l,mid][l,mid] 区间和 (mid,r](mid,r] 区间的 fftt 信息,显然有转移:
  • tl,r,x=tl,mid,x+tmid+1,r,xt_{l,r,x}=t_{l,mid,x}+t_{mid+1,r,x}
  • fl,r,x,y=fl,mid,x,y+fmid+1,r,x,y+tl,mid,xtmid+1,r,yf_{l,r,x,y}=f_{l,mid,x,y}+f_{mid+1,r,x,y}+t_{l,mid,x}\cdot t_{mid+1,r,y}
然后就可以线段树维护了。

考虑 i[l,r],aivai\forall i\in [l,r],a_i\gets v_{a_i} 这个操作会对 fl,r,x,yf_{l,r,x,y}tl,r,xt_{l,r,x} 造成什么影响。
fl,r,x,yf'_{l,r,x,y}tl,r,xt'_{l,r,x} 表示修改后 fftt 的值,有:
  • tl,r,x=ivi=xtl,r,it'_{l,r,x}= \sum\limits_{i\mid v_i=x}t_{l,r,i}
  • fl,r,x,y=i,jvi=x,vj=yfl,r,i,jf'_{l,r,x,y}=\sum\limits_{i,j\mid v_i=x,v_j=y}f_{l,r,i,j}
这样就可以维护修改了。

考虑区间修改怎么维护 lazytag。
你发现如果一个区间 [l,r][l,r] 的数先使 aixaia_i\gets x_{a_i} 再使 aiyaia_i\gets y_{a_i} 等价于先使 xiyxix_i\gets y_{x_i} 再使 aixaia_i\gets x_{a_i}
然后有了这个性质你就可以维护 lazytag 了。令 bib_i 为每次区间修改时的 lazytag,只需要让 bivbib_i\gets v_{b_i} 即可,vv 是原题面中的 S,T,US,T,U。下传同理。

评论

0 条评论,欢迎与作者交流。

正在加载评论...