2023.4.10
太菜了。
T1
求
\[\sum_{L\le a\le b\le R}\lbrack b\space mod\space a=b\space xor\space a\rbrack
\]
值域 \(1e18\) .
枚举余数能得到 \(\lfloor\frac{b}{a}\rfloor=1\) .
那么 \(b-a=b\space xor\space a\) .
推得 \(a\le b<2a,a\in b\) .
\(b,a\) 二进制的第一位相同。
然后数位dp。
\(f[i][0/1][0/1][0/1]\) 表示位数,当前最高位,\(b\le R\) ,\(a\ge L\) .
记忆化搜索,复杂度 \(O(8\times log\space V)\) .
就是不太会写。
T2
一个联通无向图,一些边只能走一次,其他不限,问能不能遍历这些边。
值域 \(2e5\) .
先去掉限制的边,那么剩下的连通块可以各自视为一个点。
问题就是判定欧拉路径。
直接暴做丢了多条欧拉路径的一档部分分。
T3
[ABC248G] GCD cost on the tree
点分治简单题。
没调出来保灵了。
书上背包复杂度是 \(O(n\times128)\) ,这个是 \(\max_{i=1}^{1e5}d(i)\) ,队爷讲的没听懂。
可以用欧拉反演,枚举 \(d\) ,保留为 \(d\) 倍数的点,树形dp做所有连通块的 \(size\) 之和。
只用求 \(\sum\limits_{d}size\times\varphi(d)\) 即可,一个点只遍历 \(128\) 次,复杂度同上。
\(25+69+0=95\) .
谔谔。