CF做题记录(二)

Codeforces Round #585 (Div. 2)

D. Ticket Game

Description

给定一个长度为\(n\)的数字串(\(n\)为偶数),其中有一些位置的值被删除了用\(?\)表示,有两个人要在这个上面玩一个游戏。这两个人会轮流把串中的问号替换成一个数字\(\in [0, 9]\),如果最后前一半所有数位的和等于后一半所有数位的和,那么后手赢,否则先手赢。现在给定这个带\(?\)的数字串,你需要求出谁最后会赢

\(2 \leq n \leq 2 \times 10^5\)

Solution

我们可以先考虑只有一边有\(?\)的情况,设\(?\)的数量为\(C\)(\(C\)为偶数),有\(?\)的那边比另一边的权值和少\(d\)

  • \(Case_1​\),如果\(d = \frac{C}{2} \times 9​\),先手放\(x​\),后手就放\(9-x​\),后手赢
  • \(Case_2\),如果\(d > \frac{C}{2} \times 9\),先手就一直放\(0\),不论后手怎么放,\(d\)总是大于\(0\),先手赢
  • \(Case_3\),如果\(d < \frac{C}{2} \times 9\),先手就一直放\(9\),不论后手怎么放,\(d\)最后会小于\(0\),先手赢

现在我们再考虑一下两边都有括号的情况,我们假设左边的\(?\)较多,左边的权值和比右边的少\(d​\),括号数量的差为\(C​\)

  • 如果\(d = \frac{C}{2} \times 9​\),那么不论先手怎么放,后手就可以对称的去放,然后转化为\(Case_1​\)
  • 如果\(d > \frac{C}{2} \times 9\),先手就可以在右边放一个\(9\),以此来转换先后手,然后再按照对手的操作对称去放。最后只有左边有奇数个\(?\)的时候,\(d > \frac{C}{2} \times 9 + 9\)。等对手放完之后,就转化为了\(Case_2\)
  • 如果\(d < \frac{C}{2} \times 9\),先手就可以在右边放一个\(0\),以此来转换先后手,然后再按照对手的操作对称去放。最后只有左边有奇数个\(?\)的时候,\(d < \frac{C}{2} \times 9\)。等对手放完之后,就转化为了\(Case_3\)

所以我们就只需要知道\(C, d\),就可以确定胜负了

\(Solution\)思路来源:mohamedeltair

E. Marbles

Description

给定一个长度为\(n\)的数列\(a_i\),你可以花费\(1\)的代价交换相邻的两个元素。现在你要使得每种权值的下标连续,问最小需要多少花费

\(2 \leq n \leq 4 \times 10^5, 1 \leq a_i \leq 20\)

Solution

我们可以先处理出任意一种权值考虑对于任意一个其它权值的集合,如果要把所有这种权值的数都移到最左边需要的代价。然后我们就可以设\(dp[s]\)表示把\(s\)集合中的权值都处理完后(移动到最左边)所需要的最少代价,然后我们就每次枚举一种没有处理的权值转移就可以了

code

F. Radio Stations

Description

\(p\)个信号站,每一个信号站只有在总站发出的功率在\([l_i, r_i]\)时才能正常工作,现在有\(n\)个形如\(x_i\)号信号站和\(y_i\)至少要有一个正常工作的限制,有\(m\)个形如\(x_i\)号信号站和\(y_i\)不能同时正常工作的限制

总站能发出的功率\(f\)的范围是\(\in [1, M]\),你现在需要确定总站发出的功率以及哪些信号站工作,使其满足给定的所有限制

\(2 \leq n, p, M, m \leq 4 \times 10^5​\)

Solution

我们可以发现如果没有功率的限制,那就是一道\(2-SAT\)的模板题,现在我们考虑怎么解决功率的限制

我们可以考虑对于每一种功率都建一种变量,第\(i\)个点表示\(f \geq i\),其逆否命题表示\(f < i\)。我们对于\(f \geq i\)\(f \geq i - 1\)连边,因为如果\(f\)满足前者,显然就会满足后者。同理,我们对于\(f < i\)\(f < i + 1\)连边。然后我们可以把信号站对于功率的限制转化为下面两个限制:\(f \geq l_i\)和不选\(i\)至少有一个成立,\(f < r_i + 1\)和不选\(i\)至少有\(1\)个成立。然后就直接跑\(2-SAT\),随便跑出一组解就可以了

code

Summary

这场也只能算是打得一般,\(E\)题就是一道思博题,还想了半个多小时...

以后打的时候一定要注意做题速度,因为\(Div2\)有很多手速场。比如说这场,从第\(4\)名到差不多\(200\)名都是\(A\)\(5\)题,就是看谁的手速快

posted @ 2019-09-17 14:19  xunzhen  阅读(241)  评论(0编辑  收藏  举报