• 牛客网:ph试纸


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

    时间限制:C/C++ 2秒,其他语言4秒
    空间限制:C/C++ 32768K,其他语言65536K
    64bit IO Format: %lld

    题目描述

        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。
    数据量较大,注意使用更快的输入输出方式。

    这道题主要是对字符串进行处理,把B和R出现的位置记录在数组中,直接输出就行。

    #include<stdio.h>
    #include<string.h>
    #define N 1000020
    char str[N];
    int a[N],b[N];
    int main()
    {
        int m,i,j,s,n;
        char ch;
        while(scanf("%d%d",&n,&m)!=EOF)
        {
            memset(a,0,sizeof(a));
            memset(b,0,sizeof(b));
            memset(str,0,sizeof(str));
            i=1;
            j=1;
            scanf("%s",str);
            for(s=0;s<n;s++)
            {
                if(str[s]=='R')
                {
                    a[i]=s+1;
                    i++;
                }
                else
                {
                    b[j]=s+1;
                    j++;
                }
            }
             
            while(m--)
            {
                getchar();
                scanf("%c %d",&ch,&s);
                if(ch=='R'&&a[s]!=0)
                printf("%d
    ",a[s]);
                else if(ch=='B'&&b[s]!=0)
                printf("%d
    ",b[s]);
                else
                printf("-1
    ");
            }
        }
        return 0;
    }
  • 相关阅读:
    如何在winform的numericUpDown中显示小数点
    Jquery attr 和removeAttr 的简单使用
    Linux下的多进程编程初步(转载)
    扩展GCD和线性模方程组
    05、Flutter常用组件
    12、Flutter组件装饰
    10、Flutter资源和图片
    09、Flutter手势控制
    04、FlutterDart语法
    07、FluterCupertino
  • 原文地址:https://www.cnblogs.com/zyq1758043090/p/10003017.html
Copyright © 2020-2023  润新知