码迷,mamicode.com
首页 > 其他好文 > 详细

CF939D Love Rescue

时间:2019-10-30 22:40:26      阅读:110      评论:0      收藏:0      [点我收藏+]

标签:状态   out   输出   NPU   print   oca   res   nbsp   put   

题目描述

给定两个长度为n的由小写字母组成的字符串
每次可以花费1的代价,指定两个字母,把其中一个全部变为另一个
求使两个字符串相同的最小花费
n <= 100000

输入输出样例

输入 #1
3
abb
dad

输出 #1

2
a d
b a

输入 #2

8
drpepper
cocacola

输出 #2

7
l e
e d
d c
c p
p o
o r
r a

解题思路

一开始自己没看懂题目,以为是对当前状态进行对应的修改,后来发现其实就是个并查集是捆绑修改的

AC Code

#include<bits/stdc++.h>
using namespace std;
int fa[30];
int find(int x) {
    if(fa[x]==x)return x;
    return fa[x]=find(fa[x]);
}
int sum;
char ans1[200],ans2[200];
char s1[100001],s2[100001];
int main() {
    int n;
    cin>>n;
    for(int i=0; i<=26; i++)fa[i]=i;
    for(int i=1; i<=n; i++) {
        cin>>s1[i];
    }
    for(int j=1; j<=n; j++) {
        cin>>s2[j];
    }
    for(int i=1; i<=n; i++) {
        int xx=find(s1[i]-a);
        int yy=find(s2[i]-a);
        if(xx!=yy) {
            sum++;
            ans1[sum]=s1[i];
            ans2[sum]=s2[i];
            fa[xx]=yy;
        }
    }
    cout<<sum<<endl;
    for(int i=1; i<=sum; i++) {
        printf("%c %c\n",ans1[i],ans2[i]);
    }
    return 0;
}

 

CF939D Love Rescue

标签:状态   out   输出   NPU   print   oca   res   nbsp   put   

原文地址:https://www.cnblogs.com/Larry-Zero/p/11768299.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!