解法
这题主要靠分析……太牛逼了
首先,肯定最后会涂上连续的
K
=
⌊
N
+
1
2
⌋
K = \lfloor\frac{N+1}{2}\rfloor
K=⌊2N+1⌋块,我们需要判断这个区间在哪
而所有可能的位置都可以实现!!!
假设我们的想涂上[i,i+K)
部分,我们只需要从中间开始
- 如果是奇数,那么从中间石块开始画
- 如果是偶数,最中间有2个石块,选择离边缘更近的那个开始画:
比如K=4
的场景oo1234o
,我们从3开始画,而对于o1234oo
我们从2开始画
画的顺序为:如果洪水侵蚀了右边,就往右边多画一块,如果洪水侵蚀了左边,就往左边多画一块
比如对于K=4
的场景一,我们可以从3开始,如果第一天吞了右边的,那么我们就画4,然后1和2肯定能在被侵蚀前画上
想出这个结论之后,这个问题就变成了求长度固定的最大区间和= =
# -*- coding: utf-8 -*-
if '__main__' == __name__:
t = int(input())
for round in range(1,t+1):
n = int(input())
string = input()
p = [0]
for c in string:
p.append(p[-1]+int(c))
ans = 0
l = (n + 1) // 2
for i,v in enumerate(p[l:]):
ans = max(ans,v-p[i])
print("Case #%d: %d"%(round,ans))