把一段 01 指示灯全部点亮的最少前缀翻转次数,等价于从右往左扫描:每遇到一个 0 就对当前前缀翻转一次。由此可以观察到:
1 开头的子串,权值一定是偶数;0 开头的子串,权值一定是奇数。因此只需统计长度为奇数、且以 0 开头的连续子串个数。
地铁换乘通道两侧安装了一排指示灯,从左到右共 n 盏,状态用长度为 n 的 01 字符串 s 表示:0 表示熄灭,1 表示点亮。检修规程规定,一次操作可以选定下标 i(1≤i≤n),把从左端到 i 的所有灯全部取反(0 变 1,1 变 0)。把某一段连续灯全部点亮所需的最少操作次数,称为该段的检修代价。调度室需要统计:s 中有多少个长度为正奇数的连续子串,其检修代价也是奇数。
连续子串是指从原串中取出一段相邻字符得到的非空字符串。
约束:1≤n≤100000。
第一行一个整数 n,表示指示灯盏数。
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.