1 条题解

  • 0
    @ 2025-8-24 22:56:40

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar Emplace
    这个家伙很赖,什么也没有留下

    搬运于2025-08-24 22:56:40,当前版本为作者最后更新于2024-04-01 12:08:27,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    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;
    }
    
    
    • 1

    信息

    ID
    9900
    时间
    3000ms
    内存
    512MiB
    难度
    1
    标签
    递交数
    0
    已通过
    0
    上传者