G 虚空之力

贪心的思想。
尽量运用一二得二的方式。
如果,那么结果就是
反之结果就是,因为必被耗完,而正巧的是减多少,结果就加多少,所以一一对应就可以了。

#include<bits/stdc++.h>
using namespace std;
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
const int inf=0x3f3f3f3f;

string s;
int k,i,n,g,ans;
int main()
{
    IOS;
    cin>>n;
    cin>>s;
    n=0;
    for(int j=0;j<s.size();j++){
        if(s[j]=='k') k++;
        if(s[j]=='i') i++;
        if(s[j]=='n') n++;
        if(s[j]=='g') g++;
    }
    ans=min(g,min(i,n));
    int maxn=-inf;
    if(2*k<=ans) maxn=2*k;
    else maxn=ans;
    cout<<maxn<<endl;
    return 0;
}