Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
51851 | AK2022071328 | 最优子序列 | C++ | 解答错误 | 0 | 6 MS | 312 KB | 1506 | 2022-07-14 08:18:27 |
#include <iostream> #include <deque> #include <cstdio> using namespace std; struct Node { int len; int link; char c; bool flag; }; int n,k,type; deque<Node>dq; string str; deque<int>ans; void read() { cin>>n>>k>>type>>str; char x='A'; str=str+" "; Node temp; temp.flag=false; for(int i=0; i<=n; i++) { if(str[i]!=x) { dq.push_back(temp); temp.link=i; temp.len=1; temp.c=str[i]; x=str[i]; } else { temp.len++; } } dq.pop_front(); } void PrintDq() { cout<<endl; for(int i=0; i<dq.size(); i++) { cout<<dq[i].link<<" "<<dq[i].len<<" "<<dq[i].flag<<endl; } cout<<endl; } int main() { read(); for(int i=0; i<dq.size(); i++) { for(int j=i+1; j<dq.size(); j++) { if(dq[i].flag) { continue; } if(dq[i].c==dq[j].c) { if((dq[j].link-dq[i].link-dq[i].len)>=(dq[i].len)) { dq[i].flag=true; } else { for(int a=i+1; a<j; a++) { dq[a].flag=true; } } } } } for(int i=0; i<dq.size(); i++) { if(!dq[i].flag) { for(int j=0; j<dq[i].len; j++) { ans.push_back(dq[i].c); } } } cout<<ans.size()<<endl; if(type==1 or type==2) { for(int i=0; i<ans.size(); i++) { cout<<(char)ans[i]; } } return 0; }