• Codeforces Round #616 (Div. 2) D (找规律题)


    找不可简化的相同字母异序词:

    链接:https://codeforces.com/contest/1291/problem/D

    题意:定义anagram表示两个字符串的字符组成相同。

    定义reducible anagram,表示可以两个字符串可以拆分成k个子串,且每个子串都是anagram的。

    irreducible anagram 就是不满足条件的。

    给个字符串,找在l~r区间内可否找到一个irreducible anagram

    分情况讨论:

    1,l=r,可以;

    2,s[l]!=s[r],可以;我们将尾巴放在头前边,那么对于任意长度的t1,t1它绝对比s1要多出一个尾字母,所以就存在一个不可约重组字符串,例如:gamegame , eegamgam

    3,如果 s[l]=s[r]如果中间存在三种或者以上的字母时 可以,我们将所有不同的字符串整理在一起按任意顺序排列,那么由于头和尾是一样的,无论怎么排都会多出一个尾字母,例如:abccabba , ccbbbaaa(问题就转化为统计区间内有多少种不同字母);

    其他情况都不行,

    代码:

    #include <cstdio>
    #include <iostream>
    #include <cstring>
    using namespace std;
    const int MAXN = 2e5 + 5;
    char ch[MAXN];
    int qzh[30][MAXN];
    int main()
    {
        scanf("%s", ch + 1);
        int len = strlen(ch + 1);
        for (int i = 1; i <= len; i++)
            for (int j = 0; j < 26; j++)//前缀和统计字母数量
                if (j == ch[i] - 'a')
                    qzh[ch[i] - 'a'][i] = qzh[ch[i] - 'a'][i - 1] + 1;
                else
                    qzh[j][i] = qzh[j][i - 1];
        int q;
        int l, r;
        scanf("%d", &q);
        while (q--)
        {
            scanf("%d%d", &l, &r);
            if (r == l)
                printf("Yes
    ");
            else if (ch[l] != ch[r])
                printf("Yes
    ");
            else if (ch[l] == ch[r])
            {
                int kd = 0;
                for (int i = 'a'; i <= 'z'; i++)
                    if (qzh[i - 'a'][r] - qzh[i - 'a'][l - 1] > 0)
                        kd++;
                if (kd >= 3)
                    printf("Yes
    ");
                else
                    printf("No
    ");
            }
            else
                printf("No
    ");
        }
        return 0;}
  • 相关阅读:
    flask 第三方组件
    Flask基础与进阶
    odoo10 视图
    odoo10 ORM操作
    odoo10基础
    字典的setdefault方法
    redis常用操作
    git常用命令与操作
    vue_axios
    odoo 权限设置
  • 原文地址:https://www.cnblogs.com/sweetlittlebaby/p/12662019.html
Copyright © 2020-2023  润新知