zoukankan      html  css  js  c++  java
  • [CF1290B] Irreducible Anagrams

    定义两个长度相同的串 s,t 为一对“神奇串”当且仅当 s 重新排列后可以变成 t。对于一对“神奇串” s,t ,定义他们为一对“超级神奇串”当且仅当能对它们划分成 k(k≥2)段(设为 s1,s2...sk,t1,t2...tk),使得所有的 1≤i≤k 都满足 si,ti 为一对“神奇串”。现在给你一个串 s,每次询问一个子串,问是否至少存在一个串使得该串与子串是一对“神奇串”但不是“超级神奇串”。

    Solution

    神仙的构造

    如果这个串长度为 (1),显然 Yes

    如果头尾字符不同,我们可以将所有和尾字符相同的移到开头,头字符相同的移到结尾,显然 Yes

    如果字符种类数不小于 (3),并且头尾字符相同,我们可以将除头尾字符外的任意两种字符分别全部移到头尾,显然 Yes

    其它情况 No

    #include <bits/stdc++.h>
    using namespace std;
    
    const int N = 200005;
    
    char s[N];
    int c[N][26],n,m,t1,t2;
    
    signed main() {
        cin>>s+1;
        n=strlen(s+1);
        for(int i=1;i<=n;i++) {
            for(int j=0;j<26;j++) {
                c[i][j]=c[i-1][j]+(s[i]=='a'+j);
            }
        }
        cin>>m;
        for(int i=1;i<=m;i++) {
            cin>>t1>>t2;
            if(t1==t2) puts("Yes");
            else if(s[t1]!=s[t2]) puts("Yes");
            else {
                int cnt=0;
                for(int j=0;j<26;j++) if(c[t2][j]-c[t1-1][j]) ++cnt;
                if(cnt>2) puts("Yes");
                else puts("No");
            }
        }
    
    }
    
    
  • 相关阅读:
    vmware克隆Centos6.4虚拟机网卡无法启动问题
    mysql错误:Statement violates GTID consistency
    /etc/vsftpd.conf详解
    Linux /etc/fstab文件
    sudo命令详解
    linux fack 文件系统修复命令
    ORA-01502: 索引或这类索引的分区处于不可用状态
    Oracle 完整性约束错误
    linux下部署redis
    Python 发送邮件案例
  • 原文地址:https://www.cnblogs.com/mollnn/p/12612172.html
Copyright © 2011-2022 走看看