• C. String Transformation 1(图的思想)


    Problem - 1384C - Codeforces

    题意:

    考拉有两个长度相同的字符串A和B(|A|=|B|=n),由前20个小写英文字母组成(即从a到t)。

    在一步棋中,Koa

    (选择A的某个位置子集p1,p2,...,pk(k≥1;1≤pi≤n;pi≠pj如果i≠j),如果Ap1=Ap2=...=Apk=x(即这个位置上的所有字母都等于某个字母x)。


    从英语字母表的前20个小写字母中选择一个字母y,使y>x(即字母y在字母表上严格大于x)。


    将位置p1,p2,...,pk中的每个字母设置为字母y。更正式地说:对于每个i(1≤i≤k)Koa设置Api=y。
    注意,你只能修改字符串A中的字母。)

    Koa想知道她为使字符串相互相等(A=B)或确定没有办法使它们相等所要做的最小的移动次数。请帮助她!

    输入
    每个测试包含多个测试用例。第一行包含t(1≤t≤10)--测试用例的数量。测试用例的描述如下。

    每个测试用例的第一行包含一个整数n (1≤n≤105) - 字符串A和B的长度。

    每个测试用例的第二行包含字符串A(|A|=n)。

    每个测试用例的第三行包含字符串B(|B|=n)。

    这两个字符串由前20个小写英文字母组成(即从a到t)。

    保证所有测试用例的n之和不超过105。

     题解:

    a只能变大,很明显,如果某个ai大于bi是一定无解的

    那对于有解的情况

    拿例一来说吧

    aab

    bcc

    如果正常来想

    a->b

    a->c

    b->c

    三步

     接着我们结合上面这个图来看

    a->b

    a->b->c

    b->c

    我们可以发现可以先让a到可以到的最小的字母b

    如果b和a都要到一个更大的字母c

    就相当于省去了步数

    1. #include<iostream>
    2. #include<algorithm>
    3. #include<map>
    4. #include<cstring>
    5. #include<vector>
    6. using namespace std;
    7. char a[100050],b[100050];
    8. int f[30][30];
    9. void solve()
    10. {
    11. int n;
    12. cin >> n;
    13. cin >> a+1>>b+1;
    14. memset(f,0,sizeof f);
    15. for(int i = 1;i <= n; i++)
    16. {
    17. if(a[i] > b[i])
    18. {
    19. cout<<"-1\n";
    20. return ;
    21. }
    22. if(a[i]<b[i])
    23. f[a[i]-'a'][b[i]-'a'] = 1;
    24. }
    25. int ans = 0;
    26. for(int i = 0;i < 20;i++)
    27. {
    28. for(int j = i+1;j < 20;j++)
    29. {
    30. if(f[i][j])
    31. {
    32. ans++;
    33. for(int k = j+1;k < 20;k++)
    34. {
    35. if(f[i][k])
    36. {
    37. f[j][k] = 1;
    38. }
    39. }
    40. break;
    41. }
    42. }
    43. }
    44. cout<<ans<<"\n";
    45. }
    46. int main()
    47. {
    48. int t;
    49. cin >> t;
    50. while(t--)
    51. {
    52. solve();
    53. }
    54. }

  • 相关阅读:
    这三个 Go 水平自测题,你手写不出来还是先老实上班吧,过来看看
    Kali 无法联网的解决方案,优雅的配置桥接模式
    为什么在MOS管开关电路设计中使用三极管容易烧坏?
    SRDenseNet
    信息安全建设之安全平台搭建
    【k8s】一、基础实验环境准备
    线程同步之条件变量
    结构体高级应用(变量位置 大小 位域 共用体)
    数据结构复习之——图算法
    【AIGC】GPT-4o技术分析-浅谈
  • 原文地址:https://blog.csdn.net/m0_64158084/article/details/127757140