Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
51683 AK2022071329 最优子序列 C++ 解答错误 0 0 MS 288 KB 1618 2022-07-13 12:40:39

Tests(0/20):


#include<iostream> #include<fstream> using namespace std; struct str { int y; char x; }; int ans=0,n=0; str a[10121202]; void d() { for(int i=0; i<n; i++) { if(a[i].y==0)continue; for(int j=i; j<n; j++) { if(a[i].x==a[j].x&&a[j].y!=0&&a[i].y!=0) { int temp=0; if(i+2==j&&a[i+1].x<a[i].x) { if(a[i+1].y==a[i].y+a[j].y) { a[i].y=0; break; } else if(a[i+1].y>=a[i].y) { a[i].y=0; break; } else if(a[i+1].y>=a[j].y) { a[j].y=0; continue; } } else if(i+2==j&&a[i+1].x>a[i].x) { if(a[i+1].y==a[i].y+a[j].y) { a[j].y=0; continue; } } for(int k=i+1; k<j; k++)temp+=a[k].y; if(a[i].y+a[j].y>temp)for(int k=i+1; k<j; k++)a[k].y=0; else { if(a[i].y>a[j].y)a[j].y=0; else { a[i].y=0; break; } } } } } } int main() { int an,k,t; string s; scanf("%d%d%d",&an,&k,&t); cin>>s; char te='0'; for(int i=0; i<an; i++) { if(s[i]!=te) { te=s[i]; n++; a[n-1].x=s[i]; a[n-1].y=1; } else if(n!=0)a[n-1].y++; } d(); for(int i=0; i<n; i++) { ans+=a[i].y; } cout<<ans<<endl; if(t==1||t==2)for(int i=0; i<n; i++)for(int j=0; j<a[i].y; j++)cout<<a[i].x; return 0; }


测评信息: