Codeforces Round #583

Contest Info


[Practice Link](https://codeforces.com/contest/1214)
Solved A B C D E F G H
4/8 O O O Ø - - - -
  • O 在比赛中通过
  • Ø 赛后通过
  • ! 尝试了但是失败了
  • - 没有尝试

Solutions


A. Optimal Currency Exchange

题意:
(n)个卢布,(d)卢布可以换(1)美元,(e)卢布可以换(1)欧元。
美元只能按(1, 2, 5, 10, 20, 50, 100)这样的面额兑换。
欧元只能按(5, 10, 20, 50, 100, 200)这样的面额兑换。
问兑换之后剩下的卢布最少是多少?

思路:
首先兑换美元只考虑(1)美元为单位进行兑换即可。
欧元只考虑(5)欧元为单位进行兑换即可。
然后考虑兑换(x)(5)欧元和(y)(1)美元。
考虑到(e leq 30),那么(5e leq 150),那么(x)的最大范围不会超过(10^6),那么直接枚举(x)即可。

B. Badges

题意:
(b)个男孩和(g)个女孩,现在有(n + 1)个盒子,第(i)个盒子里面有(i in [0, n])个红徽章以及(n - i)个蓝徽章。
有一个游戏,有(n)个人接受了邀请,问最少保留多少个盒子,使得不管这(n)个人中有(x leq b)个男孩,有(y leq g)个女孩,使得保留下来的箱子中至少存在一个箱子,使得(i geq x)并且(n - i geq y)

思路:
考虑枚举(x in [0, b])(y in [0, g]),当且仅当(x + y = n)时这种情况的盒子才需要保留。
否则都可以规约到另一个盒子。

C. Bad Sequence

题意:
有一个括号序列,问能否最多移动一个括号的位置,使得它合法。

思路:
将最后一个左括号的位置移动最左边,再检查一下是否合法即可。
为什么?
一个合法的括号序列只要它满足任意一个前缀左括号的数量都大于等于右括号数量即可

D. Treasure Island

题意:
在一个(n cdot m)和矩形中,有些地方不能走,一个人从((1, 1))出发,只能向右和向下走,问最少在几个空地上摆障碍物,使得那个人到不了((n, m))

思路:
显然答案的取值为(0, 1, 2)
如果不连通,答案为(0)
否则,加边形成一个(DAG),然后跑支配树,看看((1, 1))((n, m))上有没有支配点,有的话,答案为(1)
其实好像也是个最小割问题?

原文地址:https://www.cnblogs.com/Dup4/p/11469347.html