zoukankan      html  css  js  c++  java
  • 51nod算法马拉松B

    首先将原本字符串hash,注意每一个字母要分开了。

    然后并查集判断字符相同,将字符ascll吗乘转化为祖先乘。

    然后就可以判断相等的情况。

    然后考虑相等的情况。

    二分枚举中间点,然后如果左边是不相等并且右边不相等,那么就不是只有一个字符不相等。

    否则如果左边不相等判断左边,右边不相等判断右边

    时间复杂度:o(nlogn*26)

    虽然大约是1e8,而且常数较大,但是有5秒时限

    代码:

    #include<bits/stdc++.h>
    using namespace std;
    int f[26],k,T,l1,r2,l2,r1;
    char s[2],n[300005];
    int get(int x)
    {
        if (x==f[x])return x;
        return f[x]=get(f[x]);
    }
    int main()
    {
        scanf("%s%d",&n,&T);
        while (T--)
         {
             scanf("%d%d%d%d%d",&k,&l1,&r1,&l2,&r2);
             for (int i=0;i<26;i++)f[i]=i;
             l1--;l2--;r1--;r2--;
             while (k--)
              {
                  scanf("%s",&s);
                  f[get(s[0]-97)]=f[get(s[1]-97)];
              }
             if (r1-l1!=r2-l2)
             {
                  puts("NO");
                  continue;
             } 
            int num=0,ff=0; 
            for (int i=l1;i<=r1;i++)
             {
                 if (get(n[i]-97)!=get(n[i+l2-l1]-97))num++;
                 if (num==2)
                  {
                      ff=1;
                      break;
                  }
             } 
            if (ff)puts("NO");
            else puts("YES"); 
         }
    }
  • 相关阅读:
    四 闭包函数、装饰器
    三 名称空间与作用域
    二 函数对象、函数嵌套
    一 函数定义
    函数路线
    Django_rest_framework分页
    Django Rest framework序列化流程
    Django Rest framework的限流实现流程
    mysql 数据库查看表的信息
    java JDBC编程流程步骤
  • 原文地址:https://www.cnblogs.com/xuanyiming/p/7486571.html
Copyright © 2011-2022 走看看