2023.8.21 LGJ Round
A
多次询问 \(l,r\),求 \(\sum_{x=l}^r\sum_{y=x}^r a_x \otimes \gcd(a_x\sim a_y)\),其中 $\otimes $ 是异或。
发现 \(\gcd(a_x\sim a_y)\) 的对于所有 \(y\) 取值最多只有 \(\log(值域)\) 种。
可以求出 \(\gcd(a_x\sim a_y)\) 不同取值所对应的连续段。
记 \(sum(k,r)=\sum_{x=1}^k\sum_{y=x}^r a_x \otimes \gcd(a_x\sim a_y)\).
我们先拆解询问,\(Ans=sum(r,r)-sum(l-1,r)\),然后离线处理一下。
我们考虑把询问放到其端点那里。
从 \(1\sim n\) 枚举 \(a_i\),然后把其 \(\gcd\) 的连续段进行一个区间加。
对于查询 \(sum(i,r)\),就是查询 \([l,r]\) 区间的和,去作贡献。
B
有一棵树,每次操作可以删除一棵子树。求总共删除了 \(i\) 次,且把树删完的方案数。
考虑树上背包。 \(f_{u,i}\),表示子树 \(u\) 里贡献了 \(i\) 次操作的方案数。
初始时不考虑父亲 \(f_{u,0}=1\).
然后加入儿子进行背包,具体是 \(f_{u,i+j}\leftarrow f_{v,j}\cdot f_{u,i}\cdot C(i+j,i)\)
最后考虑把父亲加入背包,\(f_{u,i+1}\leftarrow f_{u,i+1}+f_{u,i}\). 对应删或不删这个父亲。
注意根节点必须要删。
C
一张 DAG,每条边有权值和长度,求最长的路径,其中保证相邻的边权值异或起来不大于 \(lim\).
考虑以边作点,然后给“在原图上经过同一个点的边”之间连边,保证权值异或不大于 \(lim\).
但是这样遇到菊花图,新图的边就是 \(m^2\) 级别的。
考虑使用字典树来优化,对于原图的点都建一棵字典树.
对于这个点的每条入边,字典树上寻找其可走的出边即可。
D
黄题。