zoukankan      html  css  js  c++  java
  • CF939D Love Rescue

    题目描述

    给定两个长度为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=1; 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'+1);
            int yy=find(s2[i]-'a'+1);
            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
    ",ans1[i],ans2[i]);
        }
        return 0;
    }
  • 相关阅读:
    转载(腾讯云社区)——详解django-apscheduler的使用方法
    pipenv——python包管理工具
    xx系统需求进度02
    xx系统需求进度01
    Hbase简介
    第七周总结
    《软件需求十步走》阅读笔记一
    第六周总结
    HDFS
    金字塔表达方法
  • 原文地址:https://www.cnblogs.com/Larry-Zero/p/11768299.html
Copyright © 2011-2022 走看看