【牛客 - 157C】PH试纸(前缀和,或权值线段树,主席树)

题干:

链接:https://ac.nowcoder.com/acm/contest/157/C
来源:牛客网

题目描述

    PH试纸,是一种检测酸碱度的试纸,试纸红色为酸性,蓝色为碱性。

    HtBest有一个PH试纸,试纸被分成了n段,每一段都可以被染色成红色或者蓝色,WHZ在试纸的每一段上都染为一种颜色,HtBest有m个询问,对于每个询问,Ta想知道某种颜色第qi次在什么地方出现。

输入描述:

第一行有两个正整数n,m。
第二行有n个字母(‘R’或’B’),每个第i个字母表示PH试纸第i段的颜色。
接下来m行,第i行有一个大写字母 ci(‘R’或’B’)和一个正整数qi ,用空格隔开,表示查询颜色ci 第qi 次出现的位置。

输出描述:

共m行,第i行一个整数,表示查询结果,若颜色ci出现次数少于qi次,则输出-1,否则输出颜色qi第ci次出现的位置。

示例1

输入

复制

2 2
RB
R 1
B 1

输出

复制

1
2

示例2

输入

复制

2 2
BB
R 1
B 2

输出

复制

-1
2

示例3

输入

复制

3 3
BRB
B 1
B 2
R 1

输出

复制

1
3
2

备注:

对于100%的测试数据:
1 ≤ n, m ≤ 1000000
所有输入数据不超过1000000。
数据量较大,注意使用更快的输入输出方式。

解题报告:

  直接维护两个前缀和,复杂度O(m)。

AC代码:

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<queue>
#include<map>
#include<vector>
#include<set>
#include<string>
#include<cmath>
#include<cstring>
#define ll long long
#define pb push_back
#define pm make_pair
using namespace std;
const int MAX = 2e6 + 5;
int n,m;
char s[MAX];
int R[MAX],B[MAX],r,b;
int main()
{cin>>n>>m;scanf("%s",s+1);getchar();memset(R,-1,sizeof R);memset(B,-1,sizeof B);for(int i = 1; i<=n; i++) {if(s[i] == 'R') R[++r] = i;if(s[i] == 'B') B[++b] = i;}char ch[4];int x;while(m--) {scanf("%s%d",ch,&x);if(ch[0] == 'R') printf("%d\n",R[x]);else printf("%d\n",B[x]);}return 0 ;
}

进一步扩展:如果是1e5种颜色呢?  答:那也很简单啊1e5个vector就完事了。 

再一步扩展:如果两种颜色带修改呢?  答:那就建两棵线段树,对应位置如果是当前线段树维护的颜色, 那就置为1 ,然后查询第k大。

终极扩展:那如果是1e5种颜色带修改呢?  答:那就主席树。每种颜色都建一棵4*n这么大的线段树,因为同构 所以压缩到一棵主席树里,查询就找该颜色对应的线段树 在线段树上二分,线段树上维护的是 是该树维护的颜色则该点记为1 其他颜色记为0。(%%%syt)

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

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

相关文章

python访问网页速度_python实现用于测试网站访问速率的方法

这是python编写的用于测试网站访问速率的代码片段&#xff0c;可以输出打开某url的时间&#xff0c;访问100次的平均时间&#xff0c;最大时间和最小时间等等import urllib2from datetime import *import timedef Process(url,n):minSpan 10.0maxSpan 0.0sumSpan 0.0over1s …

【牛客 - 157B】凤凰(树上并查集,dfs)

题干&#xff1a; 链接&#xff1a;https://ac.nowcoder.com/acm/contest/157/B 来源&#xff1a;牛客网 题目描述 传说&#xff0c;凤凰是百鸟之王。有一天&#xff0c;凤凰要召开百鸟大会&#xff0c;百鸟国是一个由n个节点组成的树&#xff0c;每个节点有一只鸟&#xff0…

saltstack 管理mysql_saltstack自动化运维系列④之saltstack的命令返回结果mysql数据库写入...

saltstack自动化运维系列④之saltstack的命令返回结果mysql数据库写入salt的返回值写入mysql数据库&#xff1a;可参考&#xff1a;https://docs.saltstack.com/en/latest/ref/returners/all/salt.returners.mysql.html#module-salt.returners.mysql在mysql数据库中创建数据库、…

【PTA天梯赛CCCC -2017决赛L1-6 】整除光棍 (20 分)(大数模拟除法)

题干&#xff1a; 这里所谓的“光棍”&#xff0c;并不是指单身汪啦~ 说的是全部由1组成的数字&#xff0c;比如1、11、111、1111等。传说任何一个光棍都能被一个不以5结尾的奇数整除。比如&#xff0c;111111就可以被13整除。 现在&#xff0c;你的程序要读入一个整数x&#…

mysql etl工具有哪些_常见ETL工具一览,你知多少?

这些年&#xff0c;几乎都与ETL打交道&#xff0c;接触过多种ETL工具。现将这些工具做个整理&#xff0c;与大家分享。一 ETL工具【国外】1. datastage点评&#xff1a;最专业的ETL工具&#xff0c;价格不菲&#xff0c;使用难度一般下载地址&#xff1a;ftp://ftp.seu.edu.cn/…

【PTA天梯赛CCCC -2017决赛L2-3】图着色问题 (25 分)(图染色)

题干&#xff1a; L2-3 图着色问题 &#xff08;25 分) 图着色问题是一个著名的NP完全问题。给定无向图G(V,E)&#xff0c;问可否用K种颜色为V中的每一个顶点分配一种颜色&#xff0c;使得不会有两个相邻顶点具有同一种颜色&#xff1f; 但本题并不是要你解决这个着色问题&a…

python如何显示时间_如何让python显示当前时间(东部)

如果您需要大量时区&#xff0c;则应使用pytz包&#xff0c;并且需要正确处理夏令时的重复小时(即从午夜到凌晨1点发生的情况)。对于简单的事情&#xff0c;创建自己的时区类很容易&#xff1a;import datetimeclass EST5EDT(datetime.tzinfo):def utcoffset(self, dt):return …

【PTA天梯赛CCCC -2017决赛L2-4】部落 (25 分)(图染色)

题干&#xff1a; 在一个社区里&#xff0c;每个人都有自己的小圈子&#xff0c;还可能同时属于很多不同的朋友圈。我们认为朋友的朋友都算在一个部落里&#xff0c;于是要请你统计一下&#xff0c;在一个给定社区中&#xff0c;到底有多少个互不相交的部落&#xff1f;并且检…

python控制浏览器导出数据_Django导出数据为Excel,调用浏览器下载

1. 环境Django (2.1.10) Python3.6 xlwt (1.3.0)操作系统使用的为&#xff1a;Windows 72. 接口代码defnow_export(request):data_list CIP.objects.all() #获取数据的查询集if notdata_list:return HttpResponse(json.dumps({"state": "1", "msg&q…

☆用Python实现ACM各大输入输出格式

arr input(""); #输入一个一维数组&#xff0c;每个数之间使空格隔开 num [int(n) for n in arr.split()]; #将输入每个数以空格键隔开做成数组 print(num[0]num[1]); #打印数组 # encoding: utf-8Python的输入是野生字符串&#xff0c;所以要自己转类…

wp config.php mysql_WordPress手动配置wp-config.php文件

前不久在WordPress技术群里看到有人在安装网站程序的时候出现了系统不能自动配置wp-config.php文件的问题&#xff0c;那么这个时候就需要我们手动进行配置了。问题描述&#xff1a;如果自动创建未能成功&#xff0c;不用担心&#xff0c;您要做的只是将数据库信息填入配置文件…

sqlserver mysql分页_SQLServer数据库分页查询语句

本文主要向大家介绍了SQLServer数据库分页查询语句&#xff0c;通过具体的内容向大家展现&#xff0c;希望对大家学习SQLServer数据库有所帮助。SQL Server分页查询是我们经常会用到的功能&#xff0c;下面就为你介绍分页查询的相关语句&#xff0c;希望对您学习SQL Server分页…

Python求一个整数位数的方法

a int(input()); print(len(str(a))) print(a) 输入&#xff1a; 123 输出&#xff1a; 3 123

thinkphp使用echarts_Thinkphp 与Echarts-php 使用

这里推荐大家使用composer 依赖管理工具 导入Echarts-php库{"name": "hisune/echarts-php","version": "1.0.10","version_normalized": "1.0.10.0","source": {"type": "git",&qu…

*【ZOJ - 3604】Tunnel Network (Cayley定理,purfer数列,无根树定理,构造,结论,或dp)

题干&#xff1a; Country Far-Far-Away is a big country with N cities. But it is now under a civil war. The rebel uses the ancient tunnel network which connects all N cities with N-1 inter-city tunnels for transportation. The government army want to destro…

创建文件夹 java_java怎么建文件夹

Java文件类以抽象的方式代表文件名和目录路径名。该类主要用于文件和目录的创建、文件的查找和文件的删除等。File对象代表磁盘中实际存在的文件和目录。下面我们来看一下java中创建文件夹的方法&#xff1a;示例&#xff1a;package com.zz;import java.io.File;import java.i…

【Gym - 101986F】Pizza Delivery(Dijkstra最短路,建图方式,反向建图,Tarjan求桥,图论模板)

题干&#xff1a; 题目大意&#xff1a; 一个有向图&#xff0c;编号1~n的n个点&#xff0c;m条边&#xff0c;规定1为起点&#xff0c;2为终点&#xff0c;问对于每一条边&#xff0c;反转它的方向&#xff0c;最短路会不会发生改变&#xff0c;如果变短了&#xff0c;输出HA…

学java好还是web前端好_到底是学习Java好,还是Web前端好?

要想之后的发展空间比较大的话&#xff0c;我个人的建议还是要往全栈Web前端开发优势&#xff1a;人才缺口大&#xff0c;发展前景好&#xff0c;需求量大前景指数&#xff1a;★★★★★web前端开发前景大好&#xff01;其中的HTML5技术更是日趋成熟&#xff0c;HTML5是移动互…

【CF#505B】Mr. Kitayuta's Colorful Graph (并查集或Floyd或BFS)

题干&#xff1a; Mr. Kitayuta has just bought an undirected graph consisting of n vertices and m edges. The vertices of the graph are numbered from 1 to n. Each edge, namely edge i, has a color ci, connecting vertex ai and bi. Mr. Kitayuta wants you to p…

java data jpa_Spring Data JPA(一)简介

Spring Data JPA介绍可以理解为JPA规范的再次封装抽象&#xff0c;底层还是使用了Hibernate的JPA技术实现&#xff0c;引用JPQL(Java Persistence Query Language)查询语言&#xff0c;属于Spring整个生态体系的一部分。随着Spring Boot和Spring Cloud在市场上的流行&#xff0…