题目大意
给你一个由v和o组成的字符串,求出wow的个数。
题目链接
注意
直接排列组合,用前缀和统计v组成的w的个数后枚举每一个o即可。
- 两个连续的v构成一个w
- 数据比较大,要开long long
代码
#include <iostream>
#include <cstring>
using namespace std;
typedef long long ll;
int main() {
string s;
getline(cin, s);
int n = s.length(), cnt = 0;
int a[n + 1];
memset(a, 0, sizeof (a));
for (int i = 1; i < n; ++i) {
if (s[i] == 'v' && s[i - 1] == 'v')
a[i] = ++cnt;
else
a[i] = a[i - 1];
}
ll ans = 0;
for (int i = 0; i < n; ++i) {
if (s[i] == 'o')
ans += (1LL * a[i]) * (cnt - a[i]);
}
cout << ans << endl;
return 0;
}