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 自定义用户身份验证
    登录验证算法
    Scrapy
    爬虫性能相关
    Beautifulsoup模块
    selenium模块
    Cookie&Session
    Django Admin 本质
    JavaScript自执行函数和jquery扩展方法
    JS作用域与词法分析
  • 原文地址:https://www.cnblogs.com/Larry-Zero/p/11768299.html
Copyright © 2011-2022 走看看