Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
51504 | AK2022071318 | 最优子序列 | C++ | 运行超时 | 10 | 1000 MS | 352 KB | 825 | 2022-07-13 11:47:49 |
#include <bits/stdc++.h> using namespace std; int n,k,type,ans; string s; bool v[3005],tmp[3005],f; bool check() { for(int i=0; i<s.size()-2; i++) if(!v[i]) for(int j=i+1; j<s.size()-1; j++) if(!v[j]) for(int k=j+1; k<s.size(); k++) if(s[i]==s[k]&&s[i]!=s[j]&&!v[k]) return 0; return 1; } void dfs(int a) { if(a>n) return; if(check()) { int tot=0; for(int i=0; i<s.size(); i++) if(!v[i]) tot++; if(!f) for(int i=0; i<s.size(); i++) tmp[i]=v[i]; f++; ans=max(ans,tot); } dfs(a+1); v[a]++; dfs(a+1); v[a]=0; } int main() { cin>>n>>k>>type>>s; dfs(0); cout<<ans<<endl; if(type) for(int i=0; i<s.size(); i++) if(!tmp[i]) cout<<s[i]; }