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)。