2018-2019 ACM-ICPC, Asia Nanjing Regional Contest E.Eva and Euro coins
阿新 • • 發佈:2019-02-17
我們把k個反轉過來,然後周圍一定有一個和這個k個不相同的,然後就變成了k+1個相同的,然後我們可以把這個兩個互換位置,所以,問題就是一個祖瑪遊戲,每次消除連續的k個,然後看剩下的是否相同即可
程式碼:
#include<bits/stdc++.h> #define xx first #define yy second #define mp make_pair #define pb push_back using namespace std; typedef long long ll; typedef pair<int,int> pii; const int MAXN=1e6+5; int n,k; char s[MAXN],t[MAXN]; int st[MAXN],sz[MAXN]; string doit(char x[]) { if(k==1) return ""; int len=0; for(int i=1;i<=n;i++) { if(len&&st[len]==x[i]) { sz[len]++; if(sz[len]==k) len--; } else { len++; st[len]=x[i]; sz[len]=1; } } string ret=""; for(int i=1;i<=len;i++) { for(int j=1;j<=sz[i];j++) ret+=st[i]; } return ret; } int main() { //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); scanf("%d%d",&n,&k); scanf("%s",s+1); scanf("%s",t+1); string A=doit(s); string B=doit(t); if(A==B) puts("Yes"); else puts("No"); return 0; }