给定一个仅包含 '0'
和 '1'
的字符串 S
,我们需要计算所有子区间的权值之和。定义每个子区间的权值为将该子区间内的所有数字变为 '0'
或 '1'
所需要的最少翻转次数。对于一个子区间,记 '0'
的个数为 c0
,'1'
的个数为 c1
,则最少翻转次数为:
min(c0,c1)=2c0+c1−∣c0−c1∣
即:
2区间长度−∣c0−c1∣
小红有一个长度为N且只由字符0、1组成的字符串S,下标从1开始。
她每次可以对一个字符执行翻转操作,即0变1或者把1变成0。
对于一个区间的权值为把整个区间变成全0或者全1的最少翻转次数。
现在请你帮助小红求出所有子区间的权值之和
第一行一个整数N(1≤N≤5×105)表示字符串长度。
第二行一个长度为N的字符串,表示S。数据保证输入只含0、1。
一个整数,表示所有子区间的权值之和。
输入
3
011
输出
2
输入
3
101
输出
3