给出一个只由+
和-
组成的字符串。 如果加号和减号的个数相同那么称之为平衡。
一次操作可以将两个相邻的减号可以替换成一个加号,问这个字符串有多少子串在经过任意次操作后可以变为平衡?
">Promising String (easy version)
Promising String (easy version)
Created by LXC on Mon May 1 13:17:21 2023
https://codeforces.com/problemset/problem/1660/F1
ranting: 1700
tag: brute force, implementation, math, strings
题意
给出一个只由+
和-
组成的字符串。 如果加号和减号的个数相同那么称之为平衡。
一次操作可以将两个相邻的减号可以替换成一个加号,问这个字符串有多少子串在经过任意次操作后可以变为平衡?
题解
双重for循环
维护区间内加号的个数a,减号的个数b。以及可以替换为加号的最多减号对数c。
如果经过k次操作加号和减号的个数都相同了,那么就有a+k=b-2k,即k=(b-a)/3
如果b-a>=0 且 b-a是3的倍数则可以通过操作变为相等,但是操作的次数不能操作c,k<=c。
代码
1 |
|