「考试」省选9

这场好诡异啊啥也不会。。

T1
很厉害的虚树\(dp\)。虽然是抄的cf。话说题面里的syx是sigongzi吗?
考虑化一下式子。
两个点之间的贡献是:
\[\varphi(ab)dis(a,b)=\frac{gcd(a,b)\varphi(a)\varphi(b)}{\varphi(gcd(a,b))}(dep_a+dep_b-2dep_{lca})\]
然后尝试枚举这个\(gcd\),设为\(d\)
可是发现直接找\(gcd(a,b)=d\)的不是很好找,但是\(d|gcd(a,b)\)的很好找。
那么我们设\(g(n)\)\(n|gcd(a,b)\)的贡献,\(f(n)\)\(n=gcd(a,b)\)的贡献。
这样就有:
\[g(n)=\sum\limits_{n|d}f(d)\]
莫比乌斯反演得到:
\[f(n)=\sum\limits_{n|d}\mu(\frac{d}{n})g(d)\]
现在考虑求\(g(d)\)
列出公式:
\[g(d)=\sum\limits_{d|w_x}\sum\limits_{d|w_y}\varphi(w_x)\varphi(w_y)(dep_x+dep_y-2dep_{lca(x,y)})\]
拆一下:
\[g(d)=\sum\limits_{d|w_x}\sum\limits_{d|w_y}\varphi(w_x)\varphi(w_y)dep_x+\sum\limits_{d|w_x}\sum\limits_{d|w_y}\varphi(w_x)\varphi(w_y)dep_y-2\sum\limits_{d|w_x}\sum\limits_{d|w_y}\varphi(w_x)\varphi(w_y)dep_{lca(x,y)}\]
这样我们做一次树型\(dp\),维护一下每个点子树中的\(\varphi\)\(dep\varphi\)的和,然后就可以线性的用子树合并统计答案了。
然后发现要做\(n\)\(dp\),每次都做全部的点复杂度太高了。
发现只和关键点有关,直接建虚树\(dp\)就可以了。
笑神写了启发式合并。并不会。

T2
也是很不错的题不过两天的T2似乎都和结论题一样。
我们发现如果可能是\(yes\),那么必然有一只猪存在于全部的三元组中,设它为\(p\)
然后我们必然是将这只猪先运过去,然后某时间运回来,然后在最后再运回去。
考虑中间运回来这一次,之前的一只是\(i\),之后的一只是\(j\)
那么在不考虑这三个点的情况下如果剩下的点三元组中的其他两个建边之后是二分图就是\(yes\)咯。
因为\(p\)回来之前那次对岸可能打架,回来之后本岸可能打架,但是这些可能打架的时间中,\(i\),\(j\)全都在河中间,所以无需考虑。
然后复杂度还是不对。
考虑枚举\(i\),然后做到线性判断是否存在某个点

T3 NPIO
传上来了可以下载:https://files.cnblogs.com/files/Lrefrain/npio.zip

猜你喜欢

转载自www.cnblogs.com/Lrefrain/p/12203075.html