贪心

题目描述
牛牛注射了第二支虚空基因组,重新夺回了王之力,而牛能则想为王的诞生献上礼炮!

有一串长度为nn的小写字母组成的字符串,牛能可以从中挑选‘k’ ‘i’ ‘n’ ‘g’四个字符组成一支礼炮,或者从中挑选‘k’ ‘i’ ‘n’ ‘g’ ‘i’ ‘n’ ‘g’七个字符组成两支礼炮。请问牛能为王的诞生最多能献上多少礼炮?

题目分析
很显然,一共有三种情况,都是king,既有King,也有kinging,都是kinging,但是题目问的是最多能献上多少礼炮,所以要让kinging出现的次数尽可能的多,那么我们可以先计算这四个字母出现的个数,然后分情况讨论。

#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn = 1e7 + 10;
int vis[maxn];
char s[maxn];
int n, a, b, c, d;
int main()
{
    scanf("%d", &n);
    getchar();
    scanf("%s", s);
    for (int i = 0; i < n; ++i)
    {
        if (s[i] == 'k')
            ++a;
        if (s[i] == 'i')
            ++b;
        if (s[i] == 'n')
            ++c;
        if (s[i] == 'g')
            ++d;
    }
    int cnt = min(b, min(c, d));
        if (cnt >= 2 * a)//如果比k字母的两倍还大那么都是kinging了,直接两倍输出就行
            printf("%d\n", a * 2);
        else
            printf("%d\n", cnt);
}