题解 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)));//算出最小的,输出
} 

加油洛谷