[GCJ2020Qual] Google Code Jam Qualification Round
Vestigium
简单模拟题。
Nesting Depth
简单分治题。
Test Case 1
明显,对于S是01串的情况,由于0不可能在任何的括号中间,最优解只能是每一堆1在一个括号内。
Test Case 2
- 考虑所有0的位置,它们将字符串S分成了若干个子问题S',这些子问题两两没有交集,可以分开考虑。
- 对于一个子问题S',最优解显然是在最外面套一对括号。这样,S'中的所有数会减少1。
反复进行以上两个操作即可。
Parenting Partnering Returns
简单贪心题。(排序)
(注意一段时间实际上是一个左闭右开的区间。)
ESAb ATAd
简单交互题。(信息恢复)
策略:(\(B\)为偶数)
- 问最左边&右边的5个数。
- 若已经翻转了一次,当前已经求得最左边的\(S\)与最右边的镜像\(T\):
- 若\(S_x=T_x\),\(S_y\ne T_y\):询问\(x,y\)即可。
- 否则,若\(S=T\),则只需知道是否翻转/取反+翻转。
- 否则,若\(S=\overline{T}\),则只需要知道是否翻转/取反。
至少可以得到\(10+8*14=122\)个bit,足够了。
Indicium
较简单构造题。(拉丁方阵)
结论(?):若主对角线已知,且没有一个元素出现次数\(=n-1\),则存在一个合法的拉丁方。
该问题是一个精确覆盖问题,求解可以使用构造/搜索/DLX解决。