CF1535
A:氵
B:排序对两个偶数没影响,对两个奇数没影响。唯一的影响是可能原本偶数在后面,调到前面贡献变多。所以把所有偶数弄到前面就行。
C:\(dp[i]\) 表示前 \(i\) 个字符以第 \(i\) 个字符结尾,有多少个子串符合条件。
若 \(s[i]=?\),\(dp[i]=dp[i-1]+1\)。
若 \(s[i]=0,1\),分类:
如果上一个不是 ? 的位置和第 \(i\) 个位置不符合要求(通过奇偶性判断一下上一个非 ? 位置和第 \(i\) 个是否应该相等),那 \(dp[i]=i-pos\),\(pos\) 是上一个非 ? 位置;否则\(dp[i]=dp[i-1]+1\).
一颗满二叉树,1
就是取左子树的答案,0
就是取右子树的答案,?
就是取两个子树的答案之和作为自身子树的答案。
修改一个结点,其实只有这个结点到根的路径上的结点答案可能变化。
题目性质 \(c_{p_i}<c_i\) 指明了一条贪心的道路:优先选靠近根的。
用倍增,倍增可以很好的处理增加一个叶节点后,它的 \(2^{?}\) 级祖先是谁。
每次询问用倍增不断找询问节点最浅的还有黄金的祖先,买下对应的黄金。如果买够了就退出循环,没买够就继续找询问结点最浅的还有黄金的祖先……