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. wpf附加属性详解

    为什么使用附加属性 附加属性的一个用途是允许不同的子元素为父元素中定义的属性指定唯一的值. 此方案的一个具体应用是,让子元素通知父元素它们在用户界面 (UI) 中的呈现方式. 一个示例是 DockPa ...

  2. Hihocoder 小Hi小Ho扫雷作死一二三

    这里贴下不用枚举方格是否为雷的方法 a表示输入标号,初始值为-1代表未探知 b表示当前格子是否有雷,初始化为0,0表示未探知,1表示探知肯定有雷,2表示探知肯定无雷(我也不知道为什么不初始化为-1,作 ...

  3. 文本三剑客之sed的用法

    第1章            Sed命令 1.1  sed 命令执行过程 1.2  sed介绍 sed是一种流编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(p ...

  4. 04async await

    async async 函数返回值是一个promise对象,promise对象的状态由async函数的返回值决定   //函数的三种定义 async function hello() { return ...

  5. let与const认识

      es2015之前 在es2015之前JavaScript并没有块级作用域这个说法,只有全局和函数级的变量,let的出现使JavaScript语言有了块级作用域 在外面访问 { var a=5; l ...

  6. 20190928-01Redis五大数据类型之Hash和Zset 000 029

  7. 极简显示sessionid的jsp程序 war下载

    下载地址:https://files.cnblogs.com/files/xiandedanteng/simpleJspSessionId20200103.zip 解压后得到myweb.war就是可以 ...

  8. Tomcat三实例cluster多播方案共享session再配置

    昨天已经将两实例cluster多播方案共享Session配置成功,其中的关键就在于server.xml中,engine->channel->receiver节点中address得写成自己的 ...

  9. 一个极简Jsp工程下载

    下载地址:https://files.cnblogs.com/files/xiandedanteng/SimpleJspWebApp20191227.zip 要得到war文件,右键点项目->Ex ...

  10. 使用wangEditor富文本编辑器

    客户端配置说明 下载 百度网盘地址:点我下载 下载密码:x09x 使用 首先要引入wangEditor的js文件,然后引入jQuery 然后在body里: <body> <butto ...