Codeforces Round #659 (Div. 2) C. String Transformation 1
阿新 • • 發佈:2020-07-27
題意:每次可以將較小的字母反轉成較大的字母
貪心一下,儘量把操作挪到最大的字母那邊 ,然後統計答案
#include <bits/stdc++.h> using namespace std; int x[20][20]; int main() { int t; cin>>t; while(t--) { for(int i=0; i<20; i++) for(int j=0; j<20; j++) x[i][j]=0; int n; cin>>n;string a,b; cin>>a>>b; int flag=0; for(int i=0; i<n; i++) { if(a[i]>b[i]) { flag=-1; break; } if(a[i]!=b[i]) x[a[i]-'a'][b[i]-'a']++; } if(flag==-1) { cout<<flag<<endl; continue; } int ans=0; for(int i=0; i<20; i++) for(int j=0; j<20; j++) { if(i==19&&x[i][j]) { ans++; continue; }if(x[i][j]) { ans++; for(int ii=j+1; ii<20; ii++) { if(x[i][ii]) { x[j][ii]++; } } break; } } cout<<ans<<endl; } }