P7816/CF1610F「Stoi2029」以父之名 题解

CF1610F

P7816

*3000

\(w_u\) 表示与 \(u\) 直接相连的边的权值和。显然当 \(2\mid w_u\) 时,这个节点是无法满足条件的,因为每次调整只能对 \(\mid d^+(u)-d^-(u)\mid\) 的值造成偶数的影响。

这时候肯定会猜答案就是 \(\sum\limits_{i=1}^{n}[w_u\in\{\text{odd}\}]\),但怎么构造呢。

\(w_u\) 为奇数的点分类讨论一下。不妨设 \(c_{u,i}\) 表示与 \(u\) 相连的,边权为 \(i\) 的边的数量。\(w_u\) 的奇偶性此时只与 \(c_{u,1}\) 有关了。当 \(2\nmid w_u\) 时是有奇数个 \(1\) 和若干个 \(2\) 所得到。当 \(2\) 为奇数时,肯定是考虑 \((1,1),(2,2)\) 的配对,然后最后有一对 \((1,2)\)。配对的意思就是若 \(v,x\)\(v,y\) 之间有两条边权均为 \(w\) 的边,可以让 \(x\to v,v\to y\)\(x\gets v,v\gets y\),此时 \(v\) 依然可以满足条件,这样也就等价于删掉原来的两条边并且在 \(x,y\) 间增加一条边,那么总边数就少了一条。

于是可以存两个图,只保留边权为 \(1/2\) 的边。即 \((u,v,w)\) 变为 \((ver_w(u),ver_w(v))\)。然后同色的匹配是一个进来一个出去,时两两成对的,然后就可以想到欧拉回路?

但是有奇度数点,即 \(c_{u,2}\in\{\text{odd}\}\),最后剩一个 \(1\) 时,这个 \(1\) 可以随便定向,不好操作,于是考虑建立一个虚点对所有奇度数的点连一条权值为 \(1\) 的边后再跑欧拉回路。\(\text{even}\) 也是同理的。则对 \(w_u\in\{\text{odd}\}\) 的点显然是没有影响的,当 \(w_u\in\{\text{even}\}\) 时也不会产生影响,因为它本来就不会是候选点之一。

然后这道题就做完了,注意求欧拉回路时优先走权值相同的边。

P7816 的把输出最多个数去掉就行了。

posted @ 2024-01-06 08:02  Pengzt  阅读(0)  评论(0编辑  收藏  举报