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

黄题。

posted @ 2023-08-21 15:46  s1monG  阅读(21)  评论(0编辑  收藏  举报