欢迎来到起遇信息学
起遇信息学正处于上线筹建阶段,以下功能已全部开放免费体验: ✅ 完整题库浏览与代码提交评测(C / C++ / Python / Java 等) ✅ 入门到进阶的系列课程试读、作业与考试 ✅ AI 提示、AI 作业分析等智能助教功能 ✅ 赛事模拟与个人能力报告 ✅ 邮箱注册开放 ⏳ 付费课程订阅与微信/支付宝支付通道 ⏳ 手机号登录,微信扫码登录、微信公众号绑定 使用中如遇任何问题,欢迎通过页面底部 **"联系我们"** 与我们沟通。
A.Distinct Split
https://qycode64.com/course/6a47850a69fcccaa3fd46be4/exam/6a60a35d6d83891bb1bc08eb/problem/CF1791D
题意:
思路:
#include<bits/stdc++.h>
using namespace std;
int l[200005],r[200005],v[26];
int main(){
int t;
cin>>t;
while(t--){
int n;
string s;
cin>>n>>s;
for(int i=0;i<26;i++)v[i]=0;
l[0]=1;
v[s[0]-'a']=1;
for(int i=1;i<n;i++){
l[i]=l[i-1];
if(!v[s[i]-'a']){
v[s[i]-'a']=1;
l[i]++;
}
}
for(int i=0;i<26;i++)v[i]=0;
r[n-1]=1;
v[s[n-1]-'a']=1;
for(int i=n-2;i>=0;i--){
r[i]=r[i+1];
if(!v[s[i]-'a']){
v[s[i]-'a']=1;
r[i]++;
}
}
int ans=0;
for(int i=0;i<n-1;i++){
ans=max(ans,l[i]+r[i+1]);
}
cout<<ans<<"\n";
}
return 0;
}
B.Equivalent Strings
题意:
思路:
#include<bits/stdc++.h>
using namespace std;
string zx(string x){
int n=x.size();
if(n&1)return x;
string a=zx(x.substr(0,n/2));
string b=zx(x.substr(n/2));
if(a>b)swap(a,b);
return a+b;
}
int main()
{
string s,t;
cin>>s>>t;
if(zx(s)==zx(t))cout<<"YES";
else cout<<"NO";
return 0;
}
C.Password
#include<bits/stdc++.h>
using namespace std;
int zx[1000005];
int main(){
string s;
cin>>s;
int n=s.size();
for(int i=1,j=0;i<n;i++){
while(j>0&&s[i]!=s[j])j=zx[j-1];
if(s[i]==s[j])j++;
zx[i]=j;
}
int len=zx[n-1];
int ans=0;
while(len>0){
for(int i=1;i<n-1;i++){
if(zx[i]==len){
ans=len;
break;
}
}
if(ans)break;
len=zx[len-1];
}
if(ans)cout<<s.substr(0,ans);
else cout<<"Just a legend";
return 0;
}
0 条评论
目前还没有评论...
Be the first to comment!
返回讨论列表
95
通过题目
11
发帖数