【题解】CF1290B Irreducible Anagrams
题目大意:对于一个字符串,每次询问一个区间,看看这个区间是不是可以划分为若干区间,这些区间内数字经过排列后可以还原原来区间。
\(\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的更多相关文章
- B. Irreducible Anagrams【CF 1290B】
思路: 设tx为t类别字符的个数. ①对于长度小于2的t明显是"YES"②对于字符类别只有1个的t明显是"YES"③对于字符类别有2个的t,如左上图:如果str ...
- CF-1291 D - Irreducible Anagrams
D. Irreducible Anagrams 题意 若两个字符串中每个字符的个数都是一样的,则称他们互为\(anagrams\).现在定义两个字符串s,t是\(reducible~anagram\) ...
- Codeforces 1290B/1291D - Irreducible Anagrams
题目大意: 两串字符串 s 和 t 是否 anagrams(下文简称ANA) 的定义是: 是否能将 s 内的字母打乱顺序后再拼接得到 t 我们考虑互相ANA的两串字符串 s 和 t 我们称 t 是 s ...
- 2021record
2021-10-14 P2577 [ZJOI2004]午餐 2021-10-13 CF815C Karen and Supermarket(小小紫题,可笑可笑) P6748 『MdOI R3』Fall ...
- C#版 - Leetcode49 - 字母异位词分组 - 题解
C#版 - Leetcode49 - 字母异位词分组 - 题解 Leetcode49.Group Anagrams 在线提交: https://leetcode.com/problems/group- ...
- 算法与数据结构基础 - 哈希表(Hash Table)
Hash Table基础 哈希表(Hash Table)是常用的数据结构,其运用哈希函数(hash function)实现映射,内部使用开放定址.拉链法等方式解决哈希冲突,使得读写时间复杂度平均为O( ...
- [LeetCode 题解]: Anagrams
Given an array of strings, return all groups of strings that are anagrams. Note: All inputs will be ...
- [LeetCode]题解(python):049-Groups Anagrams
题目来源 https://leetcode.com/problems/anagrams/ Given an array of strings, group anagrams together. For ...
- [LeetCode]题解(python):049-Group Anagrams
题目来源: https://leetcode.com/problems/anagrams/ 题意分析: 给定一个字符串数组,将用相同字母(包括个数)组成的字符串放到一起.比如["eat&qu ...
随机推荐
- 飞跃原野(三维bfs)
Problem Description 勇敢的法里奥出色的完成了任务之后,正在迅速地向自己的基地撤退.但由于后面有着一大群追兵,所以法里奥要尽快地返回基地,否则就会被敌人逮住. 终于,法里奥来到了最后 ...
- [BUUOJ记录] [BJDCTF 2nd]fake google
本题考查python jinjia2的ssti,其实tplmap直接梭哈都可以 随便输入一个值,查看源代码就能看到一个Hint: 用下面的流程图测试一下,看看是什么模板引擎: 用Payload测试之后 ...
- Sqlmap Tamper绕过脚本详解
apostrophemask.py 作用:将引号替换为UTF-8,用于过滤单引号 base64encode.py 作用:替换为base64编码 multiplespaces.py 作用:围绕SQL关键 ...
- HTTP协议中的提交方式和解释POST、GET、HEAD、PUT等
最基本的方法有4种,分别是GET,POST,PUT,DELETE HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查,改,增,删4个操作 GET一般用于获取/查询资源信息,而PO ...
- js+canvas画随机4位验证码
啥都不说了,复制代码吧!!! <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...
- 09_Python语法示例(数据类型)
1.买苹果,计算金额并保留两位小数 price = int(input("苹果的单价: ")) weight = float(input("苹果的重量: ")) ...
- 剑指 Offer 49. 丑数
题目描述 我们把只包含质因子 2.3 和 5 的数称作丑数(Ugly Number).求按从小到大的顺序的第 n 个丑数. 示例: 输入: n = 10 输出: 12 解释: 1, 2, 3, 4, ...
- JAVA读取文件夹大小
几种不同的实现方法: (一)单线程递归方式 package com.taobao.test; import java.io.File; public class TotalFileSizeSequen ...
- 上传文件到服务器指定位置 & 从服务器指定位置下载文件
需要的jar包: 去maven仓库自己搜索com.jcraft下载jar包 <dependency> <groupId>com.jcraft</groupId> & ...
- iTextSharp生成PDF文件
这是一篇简单的教程,所以只涉及一些iTextSharp生成pdf的简单应用,详细教程请搜索iTextSharp进入官网看官方文档(英文版). iTextSharp官方文档:https://itextp ...