题解(求五十赞)
2026-08-18 11:18:06
发布于:上海
10阅读
0回复
0点赞
不喜勿喷
#include<bits/stdc++.h>
using namespace std;
bool cmp(string s,string t){
if(s.size()!=t.size())return s.size()>t.size();
for(int i=0;i<s.size();i++)if(s[i]!=t[i])return s[i]>t[i];
return false;
}
int T,n,m,a[10005],b[205];
string s,k;
int main(){
cin>>T;
while(T--){
string s;
cin>>s>>k;
n=s.size();
m=0;
memset(b,0,sizeof(b));
if(cmp(to_string(n),k)){
s=" "+s;
for(int i=0;i<k.size();i++)m=(m*10+k[i]-'0');
for(int i=0;i<m;i++){
for(int j=1;j<=n;j++){
a[i*n+j]=s[j]-'a'+1;
}
}
vector<int>t;
for(int i=1;i<=m*n;i++){
auto it=lower_bound(t.begin(),t.end(),a[i]);
if(it==t.end())t.push_back(a[i]);
else *it=a[i];
}
cout<<t.size()<<endl;;
}else{
int ans=0;
for(char c:s){
if(!b[c]){
ans++;
b[c]=1;
}
}
cout<<ans<<endl;
}
}
return 0;
}
点个赞吧求求了
这里空空如也


有帮助,赞一个