Codeforces Round #171 (Div. 2)
A. Point on Spiral
- 由于坐标(、|x|、|y| le 100),所以可直接bfs计算。
- 若数据较大,需要找规律。
B. Books
- 维护窗口([l,r]),使(sum_{i=l}^{r}{a_i} le t)。
C. Ladder
- 预处理出(L_i)表示位置i向右可以递增多少距离,(R_i)则表示向左。
- 那么若(l,r)满足题意的话,则(L_l+R_r gt r - l + 1)。
D. The Minimum Number of Variables
- (dp(mask))表示当前存储变量的状态。
- 若要计算(a_t),需要在(、i、j lt t)中找(a_i + a_j = a_t)的pair,新值(a_t)可以有两种选择:用新变量存储、或者用之前已存在的变量。
E. Beautiful Decomposition
- 对于连续的1来说,有两种操作:用(2^i-2^j)组成;或者(sum{2^i}) 组成。
- 观察样例1101101,在使用(2^i-2^j)形式获得连续的1之外,可以拓展到后面的0,使得后续的1可以直接使用(-2^k)组成,但是两个1中间的0会变成1,所以需要额外付出将0变成1的代价。
- 先将字符串缩减成101010……的形式,其中记录01的个数,对于每个1,我们只关心前面的0是否变成1,所以(dp(i,j))记录在偶数位(即0)时的状态j(0或1),根据0的状态可以计算出将组成当前1的最小值。
原文地址:https://www.cnblogs.com/mcginn/p/6206608.html