有人搞错了复杂度白开心了一下午/kk
基于离线 ST 表+前缀线性基合并的 做法。
upd:@chenxinyang2006 的在线 做法。
梦境原来就是回忆的足迹
会正解做法之后还以为 10 10 答案是 37……
钦定 n≤m,从 3x+y 与 x+3y 的匹配的角度考虑。考虑对于一对 x,y,我们保持 3x+y 不变,x→x−1,x+3y 如何变化。发现 x+3y→(x−1)+3(y+3)=x+3y+8。于是对于一个 3x+y=p,符合条件的 x+3y=q=8k+z,z 为定值且 k 为一个区间。
再进一步,设 k∈[l,r],容易发现对于 3x′+y′=p−8,z 不变,但是 l,r 变化。具体地 l′≤l,r′≤r。则贪心地想,从小到大枚举 p,每个 3x+y 都选择最小的满足条件的 k(即选择能匹配的最小的 x+3y),这样一定是不优的。开个数组对每个 z 记录当前已经选了的最大的 k,从前往后扫 p,从 k+1 开始判断是否可行。