CF399B Red and Blue Balls

题意

给定一个栈,按照题意模拟每次操作,问一共会做多少次操作。

解法

明显暴力不可行,但是我们发现假设这个栈从下到上定义为 a1,a2,a3,,ana_1, a_2, a_3, \cdots, a_n,设 a1=1a_1 = 1 表示蓝色,a1=2a_1 = 2 表示红色,那么 ans=i=1n{ai=12(i1)otherwise0ans = \sum_{i=1}^n \begin{cases} a_i = 1 & 2^{(i-1)} \\ \text{otherwise} & 0\end{cases}

注意字符串起始下标为 00 即可。

代码:

#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;
}
posted @   HappyBobb  阅读(3)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示