给定一个仅包含 '0' 和 '1' 的字符串 S,我们需要计算所有子区间的权值之和。定义每个子区间的权值为将该子区间内的所有数字变为 '0' 或 '1' 所需要的最少翻转次数。对于一个子区间,记 '0' 的个数为 c0,'1' 的个数为 c1,则最少翻转次数为:
min(c0,c1)=2c0+c1−∣c0−c1∣
即:
2区间长度−∣c0−c1∣
小蓝有一排共 N 个开关,从左到右编号 1 到 N。每个开关的状态用字符 0 或 1 表示。一次操作可以选定任意一个开关,将其状态翻转(0 变为 1,1 变为 0)。对于任意一个连续区间 [L,R],定义其统一代价为:通过若干次操作使得该区间内所有开关状态全部相同所需的最少操作次数。请你计算所有可能的子区间(即所有满足 1≤L≤R≤N 的区间)的统一代价之和。
开关数量 N 满足 1≤N≤5×105。输入的状态序列仅包含字符 0 和 1。
第一行一个整数 N。
第二行一个长度为 N 的字符串,由 0 和 1 组成,依次表示每个开关的初始状态。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册