首页 > 其他分享 >A. String Transformation 1

A. String Transformation 1

时间:2024-03-17 21:34:04浏览次数:29  
标签:return String int finds fa ans now Transformation

原题链接

题解

\(a\to b,b\to c,a\to c\) 等价于 \(a\to b\to c\)

\(a\to z,b\to z\) 也可以等价于 \(a\to b\to z\) 花费不变

所以是并查集,然后累积建边数量
如果 \(finds(a)==finda(z)\) 代表 \(a\) 可以通过其他的变化也顺便变成 \(z\)

code

#include<bits/stdc++.h>
using namespace std;
string s1,s2;
int n;
map<int,int> fa;
int finds(int now)
{
    return fa[now]==now?now:fa[now]=finds(fa[now]);
}
int check()
{
    int ans=0;
    for(int i=0;i<n;i++)
    {
        if(s1[i]<s2[i])
        {
            int f1=finds(s1[i]-'a'),f2=finds(s2[i]-'a');
            if(f1!=f2) ans++;
            fa[f1]=f2;
        }
        if(s1[i]>s2[i]) return -1;
    }
    return ans;
}
int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        cin>>n;
        for(int i=0;i<26;i++)fa[i]=i;
        cin>>s1>>s2;
        cout<<check()<<endl;
    }
    return 0;
}

标签:return,String,int,finds,fa,ans,now,Transformation
From: https://www.cnblogs.com/pure4knowledge/p/18079231

相关文章

  • 【经验】关于c++11中string类型字符串和整形相互转化的用法
    https://blog.csdn.net/Elephant_King/article/details/129225134 c++11中为我们提供了许多非常方便的函数,可以帮助我们在整形与string类型字符串进行转换关于Dev-c++如何使用c++11,因为本人是mac系统,使用cLion,无法安装Dev,可以在网上搜其他教程实现整形转字符串(to_string())to_s......
  • 【面试精讲】String是如何实现的?String源码分析
    【面试精讲】String是如何实现的?String源码分析目录一、String实现机制二、String不可变性(使用final修饰)三、String和 StringBuilder、StringBuffer 的区别四、==和equals的区别五、String创建对象与JVM辨析六、String源码解析1、compareTo()2、 equals() 总结......
  • UVA10829 L-Gap Substrings
    我永远喜欢数据结构。貌似是此题中第一个使用SA+分治+二维数点做法的题解?题目传送门给出字符串\(s\)和常数\(g\),求出有多少四元组\((l_1,r_1,l_2,r_2)\),满足\(s[l_1,r_1]=s[l_2,r_2]\)且\(r_1+g+1=l_2\)。\(T\)组数据,\(1\leT,g\le10\),\(|s|\le5\times10......
  • 插入数据库遇到中文无插入的问题 Error 1366 (HY000): Incorrect string value: ‘\x
    项目场景:beego登录注册过程中将信息写入到MYSQL数据库中问题描述字段写入过程中数据出现无法写入的情况,出现报错:Error1366(HY000):Incorrectstringvalue:‘\xE7\x94\xB7’forcolumn‘sex’atrow1原因分析:根据控制台收到的打印信息我发现数据正确从前......
  • 使用c++容器string相关完成
    //把邮箱地址字符串[email protected],取出其中用户名字符串打印stringgetUsername(string&s){   intpops=s.find('@');   stringusername=s.substr(0,pops);   returnusername;}//大小写转换 使用标准库提供俩函数,单个字符为操作对象stringstr=......
  • CF56D Changing a String 题解
    双倍经验:P2758。令\(dp_{i,j}\)表示\(s\)前\(i\)个字符要变成\(t\)前\(j\)个字符所需的最少移动次数。答案即为\(dp_{\lverts\rvert,\lvertt\rvert}\)。显然有初始状态\(dp_{i,0}=dp_{0,i}=i\)。因为我们只可能从添、删、替三种操作转移而来,于是有转移方程:......
  • C. Rudolf and the Ugly String
    题解遇到map时,sum++;遇到pie时,sum++。特殊情况遇到mapie时,sum--(因为map,pie分别加了一次,但是该子串只需要去掉p即可)code #include<bits/stdc++.h>usingnamespacestd;constintN=2e5+5;inta[N];intmain(){//freopen("input.txt","r",stdin);intt;ci......
  • MySQL默认值NULL、空值、Empty String的区别,哪个更好?
    一套完美的系统,离不开数据库的设计。当我们数据库添加一个新的字段的时候,你会设置默认值为NULL,空值、还是EmptyString呢?首先我们来看下这三种值的介绍空值,空白,即什么都不填,等同于NULL(设计表结构时保存空值会自动变成NULL),当然也可以手动输入默认值。NULL。EmptyString,空字......
  • 标准库之strings
    目录一、strings库介绍二、字符串比较-Compare1.介绍2.示例三、检测字符串是否包含子串-Contains1.介绍2.示例四、大小写转换1.介绍2.示例五、统计子字符串出现的次数1.介绍2.示例六、判断字符串的前后缀1.介绍2.示例七、分割和连接1.介绍2.示例八、索引1.介绍2.示......
  • 把string转化为int类型,不成功则返回0
    ///<summary>///将字符串数据转换为int数据,如果格式不对则返回0///</summary>///<paramname="str">需要转换的字符串</param>///<returns></returns>publicstaticintString2Int(stringstr......