CF399B Red and Blue Balls
题意
给定一个栈,按照题意模拟每次操作,问一共会做多少次操作。
解法
明显暴力不可行,但是我们发现假设这个栈从下到上定义为 ,设 表示蓝色, 表示红色,那么 。
注意字符串起始下标为 即可。
代码:
#pragma GCC optimize("-Ofast")
#pragma GCC target("avx")
#include <bits/stdc++.h>
using namespace std;
#define int long long
int n;
string s;
signed main()
{
scanf("%lld", &n);
cin >> s;
int l = s.size() - 1, cnt = 0;
reverse(s.begin(), s.end());
for (register int i = l; i >= 0; i--)
{
if (s[i] == 'B')
{
int nx = i + 1;
int sum = l - nx + 1;
cnt += 1ll << sum;
}
}
printf("%lld\n", cnt);
return 0;
}

浙公网安备 33010602011771号