题目描述

Bessie 找到了一个长度不超过 \(2 \cdot 10^5\) 且仅包含字符 'C','O' 和 'W' 的字符串 \(s\)。她想知道是否可以使用以下操作将该字符串变为单个字母 'C'(她最喜欢的字母):

  1. 选择两个相邻相等的字母并将其删除。

  2. 选择一个字母,将其替换为另外两个字母的任一排列。

求出这个字符串本身的答案对 Bessie 而言并不足够,所以她想要知道 \(s\) 的 \(Q\)(\(1\le Q\le 2\cdot 10^5\))个子串的答案。

输入格式

输入的第一行包含 \(s\)。

第二行包含 \(Q\)。

以下 \(Q\) 行每行包含两个整数 \(l\) 和 \(r\)(\(1\le l\le r\le |s|\),其中 \(|s|\) 表示 \(s\) 的长度)。

输出格式

输出一个长为 \(Q\) 的字符串,如果第 \(i\) 个子串可以被转变则第 \(i\) 个字符为 'Y',否则为 'N'。

样例 #1

样例输入 #1

COW
6
1 1
1 2
1 3
2 2
2 3
3 3

样例输出 #1

YNNNYN

提示

【样例解释】

第一个询问的答案是「是」,因为 s 的第一个字符已经等于 'C'。

第五个询问的答案是「是」,因为 s 的第二到第三个字符组成的子串 OW 可以通过两步操作变为 'C':

   OW
-> CWW
-> C

这个样例字符串 COW 的其他子串均不能被转变为 'C'。

【测试点性质】

  • 测试点 2-4 满足 \(|s|\le 5000\) 以及 \(Q\le 5000\)。
  • 测试点 5-11 没有额外限制。

找一找规律。首先发现。若有两个字符CO,转化为W再转化为OC。也就是说,任意两个字符可以交换顺序。

那么我们就可以将所有的字符排序。然后连续把两个小区。也就是说,每个字符最终只会剩一个。

一个O和一个W可以合成一个C,然后判断合成完之后是否刚好只有一个字符C即可。

既然是多次询问,那么我们预处理出前缀和,判断每一种字符有多少个,然后模2判断是否满足。

#include<cstdio>
#include<cstring>
const int N=2e5+5;
char t[N];
int q,l,r,a,b,c,s[N][3];
int main()
{
scanf("%s%d",t+1,&q);
l=strlen(t+1);
for(int i=1;i<=l;i++)
{
s[i][0]=s[i-1][0],s[i][1]=s[i-1][1],s[i][2]=s[i-1][2];
if(t[i]=='C')
s[i][0]++;
else if(t[i]=='O')
s[i][1]++;
else
s[i][2]++;
}
while(q--)
{
scanf("%d%d",&l,&r);
a=s[r][0]-s[l-1][0]&1,b=s[r][1]-s[l-1][1]&1,c=s[r][2]-s[l-1][2]&1;
if(b^c)
putchar('N');
else if(b&&c&&a)
putchar('N');
else
putchar('Y');
}
}

[USACO2022OPEN S] COW Operations S的更多相关文章

  1. POJ 3278 Catch That Cow(bfs)

    传送门 Catch That Cow Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 80273   Accepted: 25 ...

  2. 【BZOJ1623】 [Usaco2008 Open]Cow Cars 奶牛飞车 贪心

    SB贪心,一开始还想着用二分,看了眼黄学长的blog,发现自己SB了... 最小道路=已选取的奶牛/道路总数. #include <iostream> #include <cstdi ...

  3. HDU Cow Sorting (树状数组)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2838 Cow Sorting Problem Description Sherlock's N (1  ...

  4. backup, file manipulation operations (such as ALTER DATABASE ADD FILE) and encryption changes on a database must be serialized.

    昨天在检查YourSQLDba备份时,发现有台数据库做备份时出现了下面错误信息,如下所示: <Exec>   <ctx>yMaint.ShrinkLog</ctx> ...

  5. [BZOJ1604][Usaco2008 Open]Cow Neighborhoods 奶牛的邻居

    [BZOJ1604][Usaco2008 Open]Cow Neighborhoods 奶牛的邻居 试题描述 了解奶牛们的人都知道,奶牛喜欢成群结队.观察约翰的N(1≤N≤100000)只奶牛,你会发 ...

  6. 细读cow.osg

    细读cow.osg 转自:http://www.cnblogs.com/mumuliang/archive/2010/06/03/1873543.html 对,就是那只著名的奶牛. //Group节点 ...

  7. HDU 5938 Four Operations(四则运算)

    p.MsoNormal { margin: 0pt; margin-bottom: .0001pt; text-align: justify; font-family: Calibri; font-s ...

  8. ios基础篇(二十九)—— 多线程(Thread、Cocoa operations和GCD)

    一.进程与线程 1.进程 进程是指在系统中正在运行的一个应用程序,每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内: 如果我们把CPU比作一个工厂,那么进程就好比工厂的车间,一个工厂有 ...

  9. POJ 3176 Cow Bowling

    Cow Bowling Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 13016   Accepted: 8598 Desc ...

  10. raw,cow,qcow,qcow2镜像的比较

    在linux下,虚拟机的选择方式有很多,比如vmware for linux,virtual box,还有qemu,在以前,使用qemu的人不多,主要是使用起来有些麻烦,但现在随着Openstack的 ...

随机推荐

  1. [ABC129E] Sum Equals Xor

    2023-01-15 题目 题目传送门 翻译 翻译 难度&重要性(1~10):4 题目来源 AtCoder 题目算法 dp/模拟 解题思路 我们都知道,异或是一种不进位的加法,而要想 $ a ...

  2. 03.前后端分离中台框架 zhontai 项目代码生成器的使用

    zhontai 项目 基于 .Net7.x + Vue 等技术的前后端分离后台权限管理系统,想你所想的开发理念,希望减少工作量,帮助大家实现快速开发 后端地址:https://github.com/z ...

  3. ABP Framework 7.4 RC 新增功能简介:增强微服务架构支持

    ABP Framework 版本号:7.4.0-rc.1 发布时间:2023.8.16 阅读原文:ABP.IO Platform 7.4 RC Has Been Published 翻译:iEricL ...

  4. Visual Studio Code(vscode)下载慢 插件安装失败解决方案

    目录 一.系统环境 二.前言 三.Visual Studio Code(vscode)简介 四.解决Visual Studio Code(vscode)下载慢的问题 4.1 问题描述 4.2 解决方案 ...

  5. 原神盲盒风格:AI绘画Stable Diffusion原神人物公仔实操:核心tag+lora模型汇总

    本教程收集于:AIGC从入门到精通教程汇总 在这篇文章中,我们将深入探讨原神盲盒的艺术风格,以及如何运用AI绘画技术(Stable Diffusion)--来创造原神角色公仔.我们将通过实践操作让读者 ...

  6. 原来你是这样的JAVA[05]--String

    1.从概念上讲,java字符串就是Unicode字符串. 2.字符串拼接 用指定分隔符拼接字符串数组时,使用StringJoiner或者String.join()更方便: 用StringJoiner拼 ...

  7. Go语言中匿名嵌套和类型嵌套的区别

    在Go语言中,匿名嵌套结构体和与类型同名的嵌套结构体不是完全等价的,它们有一些重要的区别.以下是它们之间的主要区别: 字段访问: 匿名嵌套结构体:当你使用匿名嵌套结构体时,内部结构体的字段可以被直接访 ...

  8. 解决WPF+Avalonia在openKylin系统下默认字体问题

    一.openKylin简介 openKylin(开放麒麟) 社区是在开源.自愿.平等和协作的基础上,由基础软硬件企业.非营利性组织.社团组织.高等院校.科研机构和个人开发者共同创立的一个开源社区,致力 ...

  9. Vue3中的Ref与Reactive:深入理解响应式编程

    前言 Vue 3是一个功能强大的前端框架,它引入了一些令人兴奋的新特性,其中最引人注目的是ref和reactive.这两个API是Vue 3中响应式编程的核心,本文将深入探讨它们的用法和差异. 什么是 ...

  10. js合并对象常用方法

    const person = { name: 'David Walsh', gender: 'Male' }; const tools = { computer: 'Mac', editor: 'At ...