首页 > 其他 > 详细

Codeforces Round #659 (Div. 2) C. String Transformation 1

时间:2020-07-27 23:46:08      阅读:52      评论:0      收藏:0      [点我收藏+]

技术分享图片

 

 

技术分享图片

 

题意:每次可以将较小的字母反转成较大的字母

贪心一下,尽量把操作挪到最大的字母那边 ,然后统计答案

 

 

 

#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;
    }
}

 

Codeforces Round #659 (Div. 2) C. String Transformation 1

原文:https://www.cnblogs.com/acmLLF/p/13386943.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!