USACO 刷题小记

\(\text{High Card Low Card}\)

\(USACO2015DEC\ Platinum\ T2\)

Description

贝西和艾尔西在玩游戏。有 \(2n\) 张牌,牌上的数字是 \(1\)\(2n\) ,贝西 \(n\) 张,艾尔西 \(n\) 张。
她们进行 \(n\) 轮出牌,轮流各出一张牌。一开始,谁的数字大谁赢。
贝西有一个特殊权利,她可以在任意时刻把规则从谁大谁赢改成谁小谁赢,问贝西最多能赢多少轮。

Data Range

\(2\le n\le 50000\)
\(1.00s,\ 128\ MB\)

Solution

考虑贪心。
我们记 $pre[i]$ 表示 $1$ 到 $i$ 中最多能赢几局, $suf[i]$ 表示 $i$ 到 $n$ 中最多能赢几局。
答案 $ans = \min\limits_{i=0}^{n} (pre[i] + suf[i+1])$
如果前面和后面选的数重复了怎么办?不存在这种情况!
你如果两个地方用的同一张牌i,肯定有一张牌没被用,那么分情况讨论。
1.比这张牌大。 那么这张牌可以替换掉在规则1下的牌i
2.比这张牌小。 那么这张牌可以替换掉在规则2下的牌i
中间过程用两个 $set$ 维护一下即可
复杂度 $O(nlogn)$

猜你喜欢

转载自www.cnblogs.com/wlzhouzhuan/p/12942583.html
今日推荐