省选模拟9

A. Surprise me

  把题里面那个式子用$\varphi (ij)=\frac{\varphi(i)\varphi(j) gcd(i,j)}{\varphi(gcd(i,j))}$展开一下,然后莫比乌斯套一下,发现是个挺模板的虚树式子,就是点对之间在lca处产生贡献,求总贡献之和,于是把虚树建出来dp就行了。注意的是dp的之后只能利用原有的点,虚树中在lca处新建的点不能提供贡献。

B. 过河

  发现必然会有一只神奇的猪被所有方案包含,所以首先把这只猪拿出来扔到对面,那么需要判断是否存在一种合法方案使得接下来的过程中不会冲突。

  对于剩下的猪对,由其中一只向另外一只连边,那么合法的条件是这张图是二分图。也就是说,可以将二分图的颜色相同的点运到对面,然后把神奇的猪运过来,然后把其它所有猪运过去。

  特殊的,在神奇的猪前后的两只猪并不会发生矛盾。

  所以只要判断一张图能否去掉两个点变成二分图,暴力的方法是枚举两个点暴力判断。

  正解的做法是枚举一个点,判断一张图能否再去掉一个点变成二分图。首先找到原图的一棵dfs树,若某条返祖边跨过了偶数条边那么称这条边为奇边,否则偶边。

  那么去掉的那个点合法的条件是:

  1.所有的奇边跨过它。

  2.不同时存在跨过它(以它为端点不算)的奇边和偶边。

  画个图就能理解。于是只要dfs一遍就可以了。

C. NPIO 十合一

  懒得写了。考场上基本都想到了。

猜你喜欢

转载自www.cnblogs.com/hzoi-cbx/p/12204049.html