用 f(i)f(i)f(i) 表示到第 iii 位为止的答案的期望,g(i)g(i)g(i) 表示到第 iii 位为止的后缀 o 的长度的期望。
o
如果当前是 1,那么 f(i)=f(i−1)+2g(i−1)+1f(i) = f(i - 1) + 2 g(i - 1) + 1f(i)=f(i−1)+2g(i−1)+1,g(i)=g(i−1)+1g(i) = g(i - 1) + 1g(i)=g(i−1)+1。
1
如果当前是 0,那么 f(i)=f(i−1)f(i) = f(i - 1)f(i)=f(i−1),g(i)=0g(i) = 0g(i)=0。
0
如果当前是 ? 就结合以上两者即可。
?
时间复杂度 O(n)O(n)O(n)。
注册一个 BZOJ by HydroOJ 通用账户,您就可以在我们提供的所有在线评测服务上提交代码、参与讨论。
使用您的 HydroOJ 通用账户