1 条题解

  • 0
    @ 2025-8-24 22:20:41

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar SUNCHAOYI
    报名个人赛 https://www.luogu.com.cn/contest/44296

    搬运于2025-08-24 22:20:41,当前版本为作者最后更新于2020-04-19 13:41:23,作者可能在搬运后再次修改,您可在原文处查看最新版

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

    以下是正文


    首先先要得出这三个人的循环节,分别为:ABCBABCCCAABB。然后就用这三个不同的循环节去比较正确答案。其中需要注意的是,在得出最高的正确数后,还要判断有几个人都获得了最高的分数,也就是说,输出的姓名不只11个,这一点需要额外注意

    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
    	int n,ans[3],num = 0;string str,d[3] = {"ABC","BABC","CCAABB"},name[3] = {"Adrian","Bruno","Goran"};
    	cin>>n>>str;
    	for(int i = 0;i < 3;i++)
    	{
    		ans[i] = 0;//每个人的答案初始化 
    		for(int j = 0;j <= str.size() - 1;j++)
    			if(str[j] == d[i][j % d[i].size()]) ans[i]++;//依次比较循环节 
    		num = max(num,ans[i]);//记录最高的正确数量 
    	}
    	cout<<num<<endl;
    	for(int i = 0;i < 3;i++)//可能不只一个 
    		if(ans[i] == num) cout<<name[i]<<endl;
    	return 0;
    }
    
    
    • 1

    信息

    ID
    5412
    时间
    1000ms
    内存
    32MiB
    难度
    2
    标签
    递交数
    0
    已通过
    0
    上传者