Link

题目大意:对于一个字符串,每次询问一个区间,看看这个区间是不是可以划分为若干区间,这些区间内数字经过排列后可以还原原来区间。

\(\text{Solution:}\)

菜鸡笔者字符串构造该好好练练了……

考虑基本情况:

  • 当区间长度为\(1\)的时候一定可行。这个不用证明吧。
  • 当区间左右端点不同时,一定可行。构造方法:令最右边与最左边相互交换即可。
  • 当区间不满足前两个性质并且颜色数大于\(2\)的时候一定可行。

证明性质三:

因为不满足性质\(1,2\)我们可以设它的左右端点颜色都是\(x\).那么,因为有至少三种颜色,我令一部分放到最开头,一部分放在最末尾,使得\(x\)对应的左右开头必须相连覆盖整个区间即可。

如果只有两种颜色的话,区间端点颜色为\(x.\)那么我们如果令另一种颜色覆盖两头,则一定可以在这两个端点重新排列后的位置中间找到一个点分开使得区间不符合条件。

以上就是所有情况了。至于颜色数,闲的没事可以线段树维护状压后的颜色,当然我们直接前缀和维护就行了。

#include<bits/stdc++.h>
using namespace std;
int q,l,r,L;
char s[200010];
int sum[200010][50];
int main(){
cin>>(s+1);
L=strlen(s+1);
for(int i=1;i<=L;++i)s[i]-='a';
for(int i=1;i<=L;++i){
for(int j=0;j<26;++j)sum[i][j]=sum[i-1][j];
sum[i][s[i]]++;
}
scanf("%d",&q);
while(q--){
vector<int>c;
scanf("%d%d",&l,&r);
if(l==r){
puts("Yes");
continue;
}
if(s[l]!=s[r]){
puts("Yes");
continue;
}
int tot=0;
for(int i=0;i<26;++i){
tot+=((sum[r][i]-sum[l-1][i])>0?1:0);
if(sum[r][i]-sum[l-1][i]==0)continue;
c.push_back(sum[r][i]-sum[l-1][i]);
}
//cout<<tot<<endl;
if(tot>2)puts("Yes");
else puts("No");
}
return 0;
}

【题解】CF1290B Irreducible Anagrams的更多相关文章

  1. B. Irreducible Anagrams【CF 1290B】

    思路: 设tx为t类别字符的个数. ①对于长度小于2的t明显是"YES"②对于字符类别只有1个的t明显是"YES"③对于字符类别有2个的t,如左上图:如果str ...

  2. CF-1291 D - Irreducible Anagrams

    D. Irreducible Anagrams 题意 若两个字符串中每个字符的个数都是一样的,则称他们互为\(anagrams\).现在定义两个字符串s,t是\(reducible~anagram\) ...

  3. Codeforces 1290B/1291D - Irreducible Anagrams

    题目大意: 两串字符串 s 和 t 是否 anagrams(下文简称ANA) 的定义是: 是否能将 s 内的字母打乱顺序后再拼接得到 t 我们考虑互相ANA的两串字符串 s 和 t 我们称 t 是 s ...

  4. 2021record

    2021-10-14 P2577 [ZJOI2004]午餐 2021-10-13 CF815C Karen and Supermarket(小小紫题,可笑可笑) P6748 『MdOI R3』Fall ...

  5. C#版 - Leetcode49 - 字母异位词分组 - 题解

    C#版 - Leetcode49 - 字母异位词分组 - 题解 Leetcode49.Group Anagrams 在线提交: https://leetcode.com/problems/group- ...

  6. 算法与数据结构基础 - 哈希表(Hash Table)

    Hash Table基础 哈希表(Hash Table)是常用的数据结构,其运用哈希函数(hash function)实现映射,内部使用开放定址.拉链法等方式解决哈希冲突,使得读写时间复杂度平均为O( ...

  7. [LeetCode 题解]: Anagrams

    Given an array of strings, return all groups of strings that are anagrams. Note: All inputs will be ...

  8. [LeetCode]题解(python):049-Groups Anagrams

    题目来源 https://leetcode.com/problems/anagrams/ Given an array of strings, group anagrams together. For ...

  9. [LeetCode]题解(python):049-Group Anagrams

    题目来源: https://leetcode.com/problems/anagrams/ 题意分析: 给定一个字符串数组,将用相同字母(包括个数)组成的字符串放到一起.比如["eat&qu ...

随机推荐

  1. Android开发之将图片文件转化为字节数组字符串,并对其进行Base64编码处理

    作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985, 转载请说明出处. /** * @将图片文件转化为字节数组字符串,并对其进行Base64编码处理 * ...

  2. NGUI List优化

    腾讯是如何做 Unity 手游性能优化的 https://juejin.im/entry/5774af485bbb50005925a3b1 Unity - NGUI - 优化ScrollView的一些 ...

  3. C#显示百度地图API

    http://dev.baidu.com/wiki/static/map/API/examples/?v=1.3&2_0#2&0 太原市的经纬度:112.596, 37.884 北京市 ...

  4. [源码解析] Flink的Slot究竟是什么?(2)

    [源码解析] Flink 的slot究竟是什么?(2) 目录 [源码解析] Flink 的slot究竟是什么?(2) 0x00 摘要 0x01 前文回顾 0x02 注册/更新Slot 2.1 Task ...

  5. Educational Codeforces Round 68 (Rated for Div. 2)-D. 1-2-K Game

    output standard output Alice and Bob play a game. There is a paper strip which is divided into n + 1 ...

  6. JS中写继承的方式

    有父子两个函数,代表两个类: var parent = function(){} var child = function(){} 一.直接继承 child.prototype = new paren ...

  7. 关于Vue-loader的那些事儿

    什么是Vue-loader 一个webpack的加载器,负责将vue组件编译成普通的JavaScript模块. 关于webpack的介绍 这里呢?用到webpack,在项目的编译打包的过程中,将复杂的 ...

  8. 面向对象--有参数的__init__方法

    有参数的__init__()方法 class Hero(object): """定义了一个英雄类,可以移动和攻击""" def __init ...

  9. maoge数

    maoge数 题目描述 maoge定义一个数x是maoge数的条件,当且仅当x的各数位之和等于 x / 2向下取整,现在maoge想让你求 n 的约数中有多少个maoge数 输入格式 输入一个数 n ...

  10. [Spark]Spark、Yarn 入门

    Spark在集群上的运行模式 链接: http://spark.apache.org/docs/latest/cluster-overview.html Component章节 总结: 1 Each ...