VP 9.26 AtCoder Regular Contest 076

VP 时切了 CD,E 题想到了结论但是人傻了,一种情况没有考虑,一直 WAWAWA。

C Reconciled?

显然,当 \(abs(n, m) > 1\) 时 为 \(0\)

\(n= m\) , 答案为 \(2\times(n!)^2\)

\(n = m + 1\) , 答案为 \(n! \times m!\)

D Built?

差点被吓傻了,以为要什么 \(\texttt{Boruvka}\) 算法。

显然这题不需要。

考虑贡献函数,\(\min(|a−c|,|b−d|)\) 也就是说每个点尽量向 \(x , y\) 离他最近的点连边,然后 \(\texttt{Kruskal}\) 就行了,边数 \(4 \times n\) 条,轻松通过。

E Connected?

一个比较显然的结论(VP 的时候想到了):只有两个点都在边界上才会影响答案,因为其他的线可以绕绕绕来满足答案。

然后我就脑抽了,只统计了两个点都在 \(x\) 边界或者 \(y\) 边界的情况 /qd /kk

一直 WAWAWA ..

考虑有用的线,那么它们在边界上构成了一个类似括号序列的东西,只要排个序,然后用栈,检查是不是括号序列就行了。

F Exhausted?

orz Hall 定理做法,但是我不会,先咕咕咕一下

考虑贪心,我们可以先按左端点排序,然后按 \(L\) 尽量放,如果一个点放不了了,那么从之前放的点中选出一个 R 最小的点,然后让它让位,去满足 \(R\) 的限制,最后 \(check\) 一下就行了。

posted @ 2021-09-27 08:06  Werner_Yin  阅读(46)  评论(0编辑  收藏  举报