类型 1 询问的是区间内出现奇数次的不同取值的异或。把区间里每个位置上的数逐个异或,相同值出现偶数次会互相抵消,剩下的恰好是出现奇数次的那些值。令前缀异或 S[i]=a1⊕a2⊕⋯⊕ai,则
类型 2 询问的是出现偶数次(且至少两次)的不同取值的异或。令 D(l,r) 为区间内每个不同取值各取一次再异或,则偶数次取值与奇数次取值互不相交,且并起来正好是全部出现过的取值,因此
有一条长度为 n 的读数序列 a1,a2,…,an,以及 q 次询问。询问有两种:
1:取出区间 [l,r] 中出现奇数次的所有不同取值(出现次数对 2 取模为 1 且至少出现一次),将它们逐一异或。2:取出区间 [l,r] 中出现偶数次的所有不同取值(出现次数对 2 取模为 0 且至少出现两次),将它们逐一异或。若区间内没有符合条件的取值,结果为 0。
序列长度与询问次数均不超过 105,每个读数不超过 109。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册