Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
51519 | MattL | 最优子序列 | C++ | 运行超时 | 0 | 1094 MS | 6968 KB | 1344 | 2022-07-13 11:50:17 |
#include<bits/stdc++.h> using namespace std; const int N=3000+10; int n,k,type,cnt; string s,ss; char t=' '; struct mys { int num; char cr; }a[N]; vector<int> app[13]; vector<string> ans; int anscnt,maxn=0; int dui[N]; string anss="zzzzz"; bool vis[12]; void jia(string &str,char chr,int nn) { for(int i=1;i<=nn;i++) str+=chr; } void dfs(int x,int num,string lst) { cout<<lst<<endl; if(lst.size()>=maxn)ans.push_back(lst),maxn=lst.size(); if(!app[x].size()||x<0||num>=app[x].size()||vis[x])return ; vis[x]=true; // dfs(a[app[x][num]+1].cr-'a',dui[app[x][num]+1],lst); // jia(lst,char(x+'a'),a[app[x][num]].num); for(int i=num;i<app[x].size();i++) jia(lst,char(x+'a'),a[app[x][i]].num),dfs(a[app[x][i]+1].cr-'a',dui[app[x][i]+1],lst); vis[x]=false; } int main() { cin>>n>>k>>type; cin>>ss; for(int i=0;i<n;i++) if(ss[i]==a[cnt].cr) a[cnt].num++; else a[++cnt].num=1,a[cnt].cr=ss[i]; for(int i=1;i<=cnt;i++) app[a[i].cr-'a'].push_back(i),dui[i]=app[a[i].cr-'a'].size()-1; for(int i=0;i<k;i++) dfs(i,0,""); cout<<maxn<<endl; if(type==0)return 0; for(int i=0;i<ans.size();i++) if(ans[i].size()==maxn) if(type==2) anss=min(anss,ans[i]); else{ cout<<ans[i]<<endl;return 0;} cout<<anss<<endl; return 0; } /* 13 12 2 kickickickcik */