P8271 [USACO22OPEN] COW Operations S 奶牛操作

P8271 [USACO22OPEN] COW Operations S 奶牛操作

文章目录

  • P8271 [USACO22OPEN] COW Operations S 奶牛操作
  • [USACO22OPEN] COW Operations S
    • 题目描述
    • 输入格式
    • 输出格式
    • 样例 #1
      • 样例输入 #1
      • 样例输出 #1
    • 提示
    • 分析
    • code

[P8271 USACO22OPEN] COW Operations S - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

[USACO22OPEN] COW Operations S

题目描述

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

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

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

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

输入格式

输入的第一行包含 s s s

第二行包含 Q Q Q

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

输出格式

输出一个长为 Q Q Q 的字符串,如果第 i i i 个子串可以被转变则第 i 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 ∣ ≤ 5000 |s|\le 5000 s5000 以及 Q ≤ 5000 Q\le 5000 Q5000
  • 测试点 5-11 没有额外限制。

分析

因为一个字符可以转化成两个字符串,一个字符串也可以转化成另外的一个字母,所以原来的字符串的顺序对答案没有影响。

所以我们对于一个字符串,把它转化成 C 0 / 1 O 0 / 1 W 0 / 1 C 0/1\ \ O 0/1 \ \ W 0/1 C0/1  O0/1  W0/1 的形式,再判断枚举就好了。

实现时可以用一个前缀和。

code

#include <bits/stdc++.h>
#define fu(x , y , z) for(int x = y ; x <= z ; x ++)
using namespace std;
const int N = 2e5 + 5;
int n , ans , ans1[N] , slen , l , r , flg , mp[N][4] , a[4];
char s[N] , s1[N];
int main () {int tot;scanf ("%s" , s + 1);slen = strlen (s + 1);fu (i , 1 , slen) {fu (j , 1 , 3) mp[i][j] = mp[i - 1][j];if (s[i] == 'C') mp[i][1] ++;else if (s[i] == 'O') mp[i][2] ++;else mp[i][3] ++;}int T;scanf ("%d" , &T);while (T --) {scanf ("%d%d" , &l , &r);fu (i , 1 , 3) a[i] = mp[r][i] - mp[l - 1][i];fu (i , 1 , 3) a[i] %= 2;if (a[1]) {if (!a[2] && !a[3]) printf ("Y");else printf ("N"); }else {if (a[2] && a[3]) printf ("Y");else printf ("N");}}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1917.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Python的requests库发送HTTPS请求时的SSL证书验证问题

问题描述 使用python的requests库去发送https请求&#xff0c;有时候不设置verifyFalse不报错&#xff0c;有时候又报错。 问题原因 使用Python的requests库发送HTTPS请求时&#xff0c;设置verifyFalse参数可以跳过SSL证书验证。默认情况下&#xff0c;requests库会验证SSL…

在 Linux 系统上下载 Android SDK

使用ubuntu系统进行车机开发&#xff0c;今天开始配置环境&#xff0c;首先是下载android studio&#xff0c;然后下载android sdk&#xff0c;这里需要注意的是linux系统不能使用windows系统下的Android sdk&#xff0c;亲测会出现各种问题。 常规思路&#xff0c;下载sdk&am…

Jenkins的几种安装方式以及邮件配置

目录 Jenkins介绍 Jenkins下载、安装 一、通过war包安装 二、通过docker安装 jenkins 容器中添加 git, maven 等组件 jenkins 容器中的公钥私钥 在 jenkins 容器中调用 docker 简单的方式启动 Docker server REST API 一个 jenkins 示例 三、通过Homebrew安装 访问Je…

HDFS面试(自己学习版)

1.简单问题 1. HDFS的优点&#xff1f; 处理大数据容易扩展&#xff0c;直接加服务器高容错&#xff0c;多副本低要求 不需要优秀的服务器&#xff08;负载均衡&#xff09; 2.HDFS的缺点&#xff1f; 不适应实时 &#xff0c; 修改速率相对较慢&#xff08;只能追加&#…

oceanbase基础

与mysql对比 分布式一致性算法 paxos 存储结构&#xff08;引擎&#xff09;用的是两级的 数据库自动分片功能&#xff0c;提供独立的obproxy路由写入查询等操作到对应的分片 多租户 方便扩展 存储层 http://www.hzhcontrols.com/new-1391864.html LSM tree&#xff0c;is very…

【cfengDB】自己实现数据库第0节 ---整体介绍及事务管理层实现

LearnProj 内容管理 MySQL系统结构一条SQL执行流程 cfengDB整体结构事务管理TM模块TID文件规则定义文件读写 -- NIORandomAccessFile、FileChannel、ByteBuffer接口实现文件合法检测begin()commit(tid)rollback(tid)tid文件创建 本文作为数工底层的项目CfengDB开始篇章&#xf…

UART串口通信协议

一、串行通信 串行通信分为两种方式&#xff1a;同步串行通信和异步串行通信。 同步串行通信需要通信双方在同一时钟的控制下&#xff0c;同步传输数据。 异步串行通信是指通信双方使用各自的时钟控制数据的发送和接收过程。 二、UART 通用异步收发传输器&#xff08;Unive…

【Vue/element】 el-table实现表格动态新增/插入/删除 表格行,可编辑单元格

el-table实现表格动态新增/插入/删除 表格行&#xff0c;可编辑单元格 效果如下&#xff1a; 点击“新增一行”可以在表格最后新增一行&#xff0c;单元格内容可编辑 点击绿色按钮&#xff0c;可在指定行的后面插入一行 点击红色-按钮&#xff0c;可以删除指定行 原理&#…

让小程序动起来-轮播图的两种方式--【浅入深出系列003】

浅入深出系列总目录在000集 如何0元学微信小程序–【浅入深出系列000】 文章目录 本系列校训学习资源的选择啥是轮播图轮播图的关键代码最常见的轮播图代码便于理解的轮播代码两种轮播代码的比较 实际操练第一步&#xff0c;就是找到文件。第二步&#xff0c;先改动一下最显眼…

软件测试之语音识别功能如何测试?

语音识别功能的测试需要考虑以下几个方面&#xff1a; 1. 语音输入测试 测试语音识别系统能否准确识别用户的语音输入。这包括测试系统对各种不同语言、方言和口音的理解能力&#xff0c;以及对不同声音质量和噪音环境的鲁棒性测试。 2. 语义理解测试 测试语音识别系统能否准…

Docker使用总结

Docker 1.什么是 Docker 官网的介绍是“Docker is the world’s leading software container platform.” 官方给Docker的定位是一个应用容器平台。 Docker 是一个容器平台的领导者 Docker 容器平台 Docker 应用容器平台 application项目 Mysql Redis MongoDB ElasticSeacrh …

计算机网络相关知识点总结(一)

因特网的前身是1969年创建的第一个分组交换网 ARPANET。 ARPANET&#xff08;Advanced Research Projects Agency Network&#xff09;是美国国防高级研究计划局&#xff08;ARPA&#xff09;在20世纪60年代末到70年代初开发的一种计算机网络。 它被认为是互联网的前身&#…

分布式运用——存储系统Ceph

分布式运用——存储系统Ceph 一、Ceph 介绍1.Ceph 简介2、存储基础2.1 单机存储设备2.2 单机存储的问题2.3 商业存储解决方案2.4 分布式存储&#xff08;软件定义的存储 SDS&#xff09;2.5 分布式存储的类型 3.Ceph 优势3.1 高扩展性3.2 高可靠性3.3 高性能3.4 功能强大 4.Cep…

hybridCLR热更遇到问题

报错1&#xff1a; No ‘git‘ executable was found. Please install Git on your system then restart 下载Git安装&#xff1a; Git - Downloading Package 配置&#xff1a;https://blog.csdn.net/baidu_38246836/article/details/106812067 重启电脑 unity&#xff1a;…

macOS 开发 - NSAlert

文章目录 关于 NSAlert代码实现简单弹出Alert 类型贴着窗口 beginSheetModalForWindow添加按钮关于 NSAlert 官方文档:https://developer.apple.com/documentation/appkit/nsalert代码实现 简单弹出 - (void)showAlert3{NSAlert *alert

嵌入式工程师常用的软件工具推荐

前言&#xff1a;常言道&#xff1a;工欲善其事&#xff0c;必先利其器。作为一名合格的嵌入式工程师&#xff0c;日常可能需要接触和处理各种奇奇怪怪的问题&#xff0c;这时候一款高适配性的工具将会令工作效率大大提升。作者根据个人的实际使用情况与粉丝的客观感受&#xf…

MySQL表的约束

目录 前言 1.什么是约束 2.空属性 3.默认值 4.列描述 5.zerofill 6.主键 7.自增长 8.唯一键 9.外键 总结 前言 hello&#xff0c;各位小伙伴大家好&#xff0c;本章内容为大家介绍关于MySQL约束的相关内容&#xff0c;关于约束这个概念&#xff0c;如果是第一次接触可…

JAVA ---- 经典排序算法

目录 一. 插入排序 1. 直接插入排序 代码演示 2.希尔排序( 缩小增量排序 ) 二. 选择排序 1.直接选择排序 代码&#xff1a; 2. 堆排序 代码 三. 交换排序 1. 冒泡排序 代码 2. 快速排序 代码&#xff08;有注释&#xff09;&#xff1a; 动图来自网…

ubuntu创建多用户并使用ssh链接

添加多个同时登录的用户 以下内容中的“username”根据自己需求自己定义 1.创建新用户 sudo useradd username2.给新用户添加管理权限 sudo vim /etc/sudoers打开的文件中添加如下内容 username ALL(ALL:ALL) ALL3.设置密码 输入&#xff1a; sudo passwd username打开的…

「软件测试」最全面试问题和回答,全文背熟不拿下offer算我输

一般要应聘关于测试的工作&#xff0c;面试题会不会很难?下面小编整理了软件测试面试题及答案&#xff0c;欢迎参考! 一、引言 1.1 文档目的 本次文档是为了收集在面试中遇到的一问题与常见的一些答案并不是唯一答案 二、职业规划 2.1 简单的自我介绍下 面试宫&#xff…