题解 CF757A 【Gotta Catch Em' All!】
大家好!今天我来给大家带来CF757A的题解! 很高兴大家看到这道题目! 因为这道题的背景是我翻译的!
Bash有一天想成为一名宠物小精灵大师。虽然他喜欢很多口袋妖怪,但他一直对Bulbasaur(妙蛙种子:在它出生的时候背上就背着种子。妙蛙种子经常在阳光下酣睡。它背上的种子通过吸收阳光渐渐长大)最为着迷。很快,事情开始变得严肃起来,他的迷恋变成了一种痴迷。由于他太小(未成年),不能出去捕捉Bulbasaur,他想出了自己捕捉Bulbasaur的方式。
每天,他都会看报纸的头版(他很闲)。他从报纸头版的任何地方一次切出一个字母(闲的一批),形成“Bulbasaur”字样(木有引号好吧!)并将它贴在墙上。 Bash非常讲究(是一个活泼的讲究怪)“Bulbasaur”的第一个字母必须是大写字母,其余字母必须是小写字母。通过这样做,他认为他抓住了一个Bulbasaur,(然后放入精灵球是吧!)。然后他在左边的报纸上重复了这一步骤。他一直这样做,直到不可能从报纸上形成“Bulbasaur”这个词。
鉴于报纸头版的文字,你能告诉他今天会抓到多少个Bulbasaurs?
注意:大写和小写被视为不同。
上面是我写的背景,题目是这个人写的! 题目翻译在提一下
Bash有一张报纸,上面有一些字。
Bash可以剪下这些字
他想把这些字拼成"Bulbasaur"(不包括引号)
问可以拼成多少个 $Bulbasaur$ (注意本题区分大小写)
输入一个字符串代表Bash的那张报纸里面的字
输出可以拼成多少个 $Bulbasaur$
好的开始讲题目了! 其实这道题并不难, 使用数组计数可以过! 什么个数组计数法呢! 首先本题目是会大小写区分的, 然后后有个坑是Bulbasaur这个单词 小写的u和a出现了两次; 所以我们数组计数后要除以二, 其实看起来全英文不想看, 但是还是很适合新手的呢!
#include<bits/stdc++.h>//万能头文件
using namespace std;
int B,s,r,a,b,l,u;//定义不说了
int main()
{
string st;
cin>>st;//输入
int n=st.length();//把字符串位数存好否则会达到n^2的时间复杂度因为它会每一次循环计算一次
for(int i=0;i<n;i++)
{
if(st[i]=='B')//数组计数
B++;
if(st[i]=='u')
u++;
if(st[i]=='l')
l++;
if(st[i]=='b')
b++;
if(st[i]=='a')
a++;
if(st[i]=='s')
s++;
if(st[i]=='r')
r++;
}
a/=2;//除以二(多了一个也不可以)
u/=2;
cout<<min(min(B,min(u,l)),min(min(b,a),min(s,r)));//算出最小的,输出
}
加油洛谷