atcoder#ARC137B. [ARC137B] Count 1's

[ARC137B] Count 1's

题目描述

0,1 0,1 からなる長さ N N の整数列 A=(A1,A2,,AN) A=(A_1,A_2,\cdots,A_N) が与えられます.

あなたはこれから,次の操作をちょうど 1 1 回行います.

  • A A 連続する部分列を選び,そこに含まれる要素を flip する.つまり,0 0 ならば 1 1 に変え,1 1 ならば 0 0 に変える. なお,ここで選ぶ部分列は空であることも許され,その場合 A A の要素は全く変化しない.

あなたのスコアは,A A に含まれる 1 1 の個数です. あなたが取るスコアとしてあり得る値が何通りあるか求めてください.

输入格式

入力は以下の形式で標準入力から与えられる.

N N A1 A_1 A2 A_2 \cdots AN A_N

输出格式

答えを出力せよ.

题目大意

给定一个长度为 nn 的由 0,10,1 组成的整数序列 A=(A1,A2,,An)A=(A_1,A_2,\cdots,A_n) 。你可以做以下的操作一次且仅一次

  • 选择 AA 的一个连续的子段,对该子段进行反转操作,也就是将 00 变成 11 ,将 11 变成 00 。注意,你可以选择一个空字段,这就相当于你什么都没有做。

最后 AA 中的 11 的个数,是你能获得的分数。请问你有多少种可能的得分。

4
0 1 1 0
4
5
0 0 0 0 0
6
6
0 1 0 1 0 1
3

提示

制約

  • 1  N  3 × 105 1\ \leq\ N\ \leq\ 3\ \times\ 10^5
  • 0  Ai  1 0\ \leq\ A_i\ \leq\ 1
  • 入力される値はすべて整数

Sample Explanation 1

スコアとしてあり得る値は,0,1,2,3 0,1,2,3 4 4 通りです. 例えば,A A 2 2 番目から 4 4 番目までの要素を flip すると,A=(0,0,0,1) A=(0,0,0,1) となり,スコアは 1 1 になります.