1 条题解
-
0
自动搬运
来自洛谷,原作者为

Anemones
欢迎加群 638399574搬运于
2025-08-24 22:57:16,当前版本为作者最后更新于2024-02-05 16:33:08,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
结论:操作二次后字符串不会继续被改变。
- 若 ,则称 为 「可消除的」。
这句话我们可以把它理解成 结构,那么一轮消除了所有 结构后,剩下的便是形似 这样的结构, 这样结构再经过消除就没有了。
//luogu uid:YuZeAn 736184 #include<bits/stdc++.h> #include<ext/rope> using namespace __gnu_cxx; #define dbg puts("-------------------DWT AK IOI--------------------") #define int long long #define mod 998244353 #define end putchar('\n') #define sp putchar(' ') using namespace std; inline int read(){ char c=getchar(),f=0;int t=0; for(;c<'0'||c>'9';c=getchar()) if(!(c^45)) f=1; for(;c>='0'&&c<='9';c=getchar()) t=(t<<1)+(t<<3)+(c^48); return f?-t:t; } inline void write(int x){ static int t[25];int tp=0; if(x==0) return(void)(putchar('0'));else if(x<0) putchar('-'),x=-x; while(x) t[tp++]=x%10,x/=10; while(tp--) putchar(t[tp]+48); } signed main(){ int T=read(),id=read(); while(T--){ int n=read(),k=read(); string s,s1; cin>>s; k=min(2ll,k); if(k==0||n<=2){ cout<<s<<endl; continue; } s1=s[0]; for(int i=0;i<n-2;i++){ if(s[i]!=s[i+2]) s1+=s[i+1]; } //if(n-2!=0) s1+=s[n-2]; if(n-1!=0)s1+=s[n-1]; //cout<<s1<<endl; if(k==2){ cout<<s1[0]; for(int i=0;i<s1.size()-2;i++){ if(s1[i]!=s1[i+2]) cout<<s1[i+1]; } //if(s1.size()-2!=0) cout<<s1[n-2]; if(s1.size()-1!=0) cout<<s1[s1.size()-1]; cout<<endl; } else cout<<s1<<endl; } return 0; }
- 1
信息
- ID
- 9647
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 3
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者