道路翻修题解

\(\mathcal{Description}\)

  • 给定一张无向图,为每条边定向,定义每个点的价值为出度与入度之差的绝对值,求最大价值和。
  • 对于 \(40\%\) 的数据,\(1\leq n,m\leq20\)
  • 对于 \(70\%\) 的数据,\(1\leq n\leq17\)
  • 对于 \(90\%\) 的数据,\(1\leq n\leq22\)
  • 对于所有数据,\(1\leq n\leq25\)\(1\leq m\leq\dfrac{1}{2}n(n+1)\)

\(\mathcal{Solution}\)

做法一

枚举每条边的方向,最后计算贡献。

时间复杂度 \(\mathcal{O}(2^m n)\),期望得分 \(40\)

做法二

设每个点入度 \(a_{i}\),出度 \(b_i\)

\[\vert x\vert=\begin{cases}x & x\geq0\\-x&x<0\end{cases} \]

枚举每个点绝对值取正还是负,即为 \(a_i-b_i\) 还是 \(b_i-a_i\)。最后对每条边计算贡献:

  • 设该边连接 \((u,v)\),则等价于一点 \(a_i\) 加一,一点 \(b_i\) 加一。
  • 如果 \(u,v\) 两点取的符号相同,则无法计算贡献。
  • 如果 \(u,v\) 两点取的符号不同,则贡献为 \(2\)

时间复杂度 \(\mathcal{O}(2^n(n+m))\),期望得分 \(70\)

做法三

状压每个点的相邻点与取值,计算即可。

时间复杂度 \(\mathcal{O}(2^n n)\),期望得分 \(90\)

做法四

\((u,v)\) 计算贡献,则只要 \(\max\{u,v\}\)\(\min\{u,v\}\) 算一次贡献,答案 \(\times 2\) 即可。

那么可以一边搜一边算贡献。

时间复杂度 \(\mathcal{O}(2^n)\),期望得分 \(100\)

posted @ 2023-06-03 18:13  喵仔牛奶  阅读(79)  评论(0)    收藏  举报