其他分享
首页 > 其他分享> > Codeforces Round #712 (Div. 1)

Codeforces Round #712 (Div. 1)

作者:互联网

A - Balance the Bits

考虑将 ( 看做 \(1\), ) 看做 \(-1\)。那么一个括号序列合法当且仅当每个位置的前缀和均 \(\ge 0\) 并且总和为 \(0\)。

优先满足第一个条件,有一个显然的保底策略:对于 \(s_i=1\) 的,两边都添加 (,尽管可能最终总和会过大;而对于 \(s_i=0\) 的,两边选择前缀和较小的加 (,另一个加 )

假如说最终两边总和不同,或者总和为奇数,你意识到唯一的调控空间只有 \(s_i=1\) 的将 ( 换成 ),那么肯定莫得。

然后就是所谓的调控了,尝试将最后几个 \(s_i=1\) 的将 ( 换成 ) 使得总和为 \(0\),然后检查一遍即可。

B - 3-Coloring

假如不是“3-Coloring”而是“2-Coloring”,那么唯一靠谱的方法就是黑白染色,而且 ban 颜色就痿掉了。

然而现在多了一种颜色供我们选择,那么一切就简单了。

首先还是黑白染色,颜色 \(1, 2\) 分别占有 \(n^2/2\) 个预定位置。第一步,我们先填满一种颜色的预定位置,具体的话,哪个被 ban 就填另一个。第二步,剩下的所有位置,周围都只有一种颜色,那么和备选的 \(3\) 一起,那个被 ban 就填另一个。

C - Travelling Salesman Problem

大 力 整 结 论 /dk

首先,将题意转化:\(i\to j\) 的代价为 \(\max(c_i, a_j-a_i)=\max(0, a_j-(a_i+c_i))+c_i\)。后面的 \(c_i\) 是确定的,直接记入答案。再者,观察式子发现,如果将这些城市按 \(a\) 排序,那么从后往前走的代价必然为 \(0\),这意味着我们只要考虑从第 \(1\) 到第 \(n\) 个城市的最小花费即可,中间城市可以任意选,没有选的城市可以在 \(n\to 1\) 的时候解决。

考虑当前第 \(j\) 个城市。观察式子不难发现,要使其尽量小,前一个落脚点 \(i\) 的 \(a_i+c_i\) 应该尽量大。不妨设 \(f_j=\max_{i<j} \{a_i+c_i\}\)。如果 \(f_j < a_j\),那么我们就落脚城市 \(j\)。虽然实际上并不是所有的落脚点都是这样的 \(j\),但其他的很显然代价为 \(0\)。

时间复杂度 \(O(n\log n)\),瓶颈在排序。

D - Flip the Cards

咕咕咕

E - 2-Coloring

题中所给的条件及其复杂,于是挖掘一下性质:蓝色的位置集中在上下两侧,作为两个连通分量;由于每行都应有一个蓝色的横段,下连通分量的顶端行号 \(+1\) 恰好等于上连通分量;由于每行有且只有一个蓝色横段,那么整个连通分量的上(下)轮廓为单峰;又因为要留给黄色竖段的位置,于是上下两个连通分量不能连通(四连通)。当然这不一定含括了本题的所有情况。

考虑怎么算这个东西:由于是单峰的,不妨拆成两段:设峰高为 \(h\),最右侧的峰值在 \(i\) 位置。那么相当于要计算有几条从 \((0, 1)\) 到 \((i,h)\) 的(只走上右)路径,然后和从 \((i+1,h-1)\) 之后一条结构相同的路径组合。类似的,设 \(j\) 为上面的连通分量的峰值(最左侧)。不妨令 \(i<j\),那么整个式子为:

\[\sum_{h=1}^{n-1}\sum_{i=1}^{n-1}\sum_{j=i+1}^n {i+h-1\choose h} {n-i+h-1\choose h-1}{j+m-h-2\choose m-h-1}{n-j+m-h\choose m-h} \]

如果这是你发现了蓝色和黄色在 \(n,m\) 互换之后地位相同,那么别急着 \(\times 2\),因为当 \(j=i+1\) 时会算重,把他改成 \(i+2\) 就行了。注意到最后整个东西要 \(\times 2\),因为我们钦定了 \(i<j\),实际上可以反过来。

最后,这个式子是 \(O(n^3)\) 的,但实际上吧前两个组合数提到最后那个 \(\Sigma\) 之前,就不难发现它可以前缀和优化,复杂度 \(O(n^2)\)。

F - Balance the Cards

咕咕咕

标签:连通,Coloring,位置,Codeforces,712,那么,choose,Div,分量
来源: https://www.cnblogs.com/-Wallace-/p/cf-712.html