题解:P10296 [CCC 2024 S2] Heavy-Light Composition

· · 题解

P10296 [CCC 2024 S2] Heavy-Light Composition题解

1.算法

这道题很明显是一道字符串。

2.思路

我们可以统计出每个字符出现的次数,然后先看如果是“重”的字符(也就是这个字符出现多次)开头,那就看奇数位是不是全是“重”,偶数位全是轻(也就是这个字符出现一次)。然后再看如果是“轻”的字符开头,那就把上面操作反过来做就行了。

3.代码

#include<bits/stdc++.h>
using namespace std;
int t,n,a[100];
int main(){
    cin>>t>>n;
    for(int i=1;i<=t;i++){
        char s[1000];
        memset(a,0,sizeof(a));
        cin>>s;
        for(int i=0;i<n;i++){
            int k=s[i]-'a'+1;
            a[k]++;
        }
        int f=0;
    //  cout<<a[s[0]-'a'+1]<<" "<<endl;
        if(a[s[0]-'a'+1]>1){
            for(int i=1;i<n;i++){
                if(i%2==0){
                    if(a[s[i]-'a'+1]<=1){
                        f=1;
                        break;
                    }
                }
                if(i%2==1){
                    if(a[s[i]-'a'+1]>1){
                        f=1;
                        break;
                    }
                }
            }
        }
        if(a[s[0]-'a'+1]<=1){
            for(int i=1;i<n;i++){
                if(i%2==0){
                    if(a[s[i]-'a'+1]>1){
                        f=1;
                        break;
                    }
                }
                if(i%2==1){
                    if(a[s[i]-'a'+1]<=1){
                        f=1;
                        break;
                    }
                }
            }
        }
        if(f==1){
            cout<<"F"<<endl;
        }
        else{
            cout<<"T"<<endl;
        }
    }
    return 0;
}