题目链接:https://codeforces.com/contest/1092/problem/C
题意:给你2*n-2的字符子串,每个子串要么是前缀,要么是后缀,让你从中猜出来。
题解:我们直接找最长的两个子串,显然由这两个能推出整个串。
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<string>
#include<iostream>
using namespace std;
bool book[200];
string s[200];
int main()
{
int n;
// ios::sync_with_stdio(0);
while(~scanf(\"%d\",&n))
{
string s1=\"q\",s2=\"r\",P;
for(int i=1;i<=2*n-2;i++){
cin>>s[i];
if(s1.size()<s[i].size()) s1=s[i]; ///找到最长的两个子串
else if(s1.size()==s[i].size()) s2=s[i];
}
int num=0;
for(int i=1;i<=2*n-2;i++){
if(s1.substr(0,s[i].size())==s[i]){
if(s[i]!=s2) ++num;
}
}
///假设超过一半,且s1的最长后缀等于s2的最长前缀,说明s1是前缀
if(num>=(2*n-2)/2&&s1.substr(1,s1.size()-1)==s2.substr(0,s2.size()-1))
P=s1;
else P=s2;
memset(book,true,sizeof(book));
for(int i=1;i<=2*n-2;i++)
{
if(P.substr(0,s[i].size())==s[i]&&book[s[i].size()]){
printf(\"P\");
book[s[i].size()]=0;
}
else
printf(\"S\");
}
puts(\"\");
}
return 0;
}
继续阅读与本文标签相同的文章
-
日本丰田和美国通用等8家企业联合开发自动驾驶技术
2026-05-18栏目: 教程
-
发布K12教育机械臂,越疆完成全龄段AI教育布局
2026-05-18栏目: 教程
-
有人试图用AI解读《未命名的鹅戏》里的鹅
2026-05-18栏目: 教程
-
MongoDB副本集
2026-05-18栏目: 教程
-
泉州市加快实施“互联网 生产基地 物流”着力构建区域物流枢纽新格局
2026-05-18栏目: 教程
