Codeforces Round #170 (Div. 1 + Div. 2)

A. Circle Line

  • 考虑环上的最短距离。

B. New Problem

  • \(n\) 个串建后缀自动机。
  • 找的时候bfs一下即可。

C. Learning Languages

  • 并查集维护可以沟通的人。
  • 注意会0种语言的人必然要学习。

D. Set of Points

  • 构造类似于\(y = \frac{1}{x}\) 的两条曲线即可。

E. Game

  • 本质其实就是个Nim博弈。
  • 若先手胜,要找出第一步的可行解,即判断$$sg\ xor\ a_i \le a_i$$

D. Google Code Jam

By the Google Code Jam rules the time penalty is the time when the last correct solution was submitted.

  • 对于probFail=0的题目,如果要解决的话,必然是放在probFail前面。
  • 对于probFail=1的题目,显然不会去浪费时间。
  • 剩下的就是0<probFail<1的题目之间的相对顺序了,考虑两道题目\(i,j\)的相对顺序,因为得分不会相互影响,只需要考虑罚时即可。
  • \[(t_i+t_j)(1-p_j)+t_i(1-p_i)p_j<(t_j+t_i)(1-p_i)+t_j(1-p_j)p_i \\ \frac{t_ip_i}{1-p_i} < \frac{t_jp_j}{1-p_j} \]

  • 根据上述不等式对题目排序,\(dp(i,j)\)表示前\(i\)道题目花费\(j\)时间的最优值。

E. Binary Tree on Plane

  • 除了根节点外,其余节点均有1个父节点,那么就可以构出一张二分图:左边表示父节点,右边表示儿子节点,跑一遍最小费用流即可。最大流需要等于\(n-1\)
posted @ 2017-05-09 22:13  mcginn  阅读(216)  评论(0编辑  收藏  举报