zoukankan      html  css  js  c++  java
  • 牛客网:字符串丝带

    https://www.nowcoder.com/acm/contest/136/D

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

    题目描述

        WHZ送给了HtBest一个“字符串丝带”,这条丝带由n个小写字母按照一定的顺序排列组成,HtBest收到新礼物后有许多问题,类似“第i个位置的字母在前i个位置中出现了几次?”,HtBest很希望知道答案,于是求助你帮忙解答。

    输入描述:

    第一行有2个正整数n,m,分别表示丝带长度和问题个数。
    第二行,有n个小写字母,第i个表示丝带第i位的小写字母。
    接下来有m行,每行一个正整数 ,表示HtBest的一个问题。

    输出描述:

    共m行,对于每个问题,给出答案。

    示例1

    输入

    复制

    3 3
    abc
    1
    2
    3

    输出

    复制

    1
    1
    1

    示例2

    输入

    复制

    4 4
    abba
    1
    2
    3
    4

    输出

    复制

    1
    1
    2
    2

    示例3

    输入

    复制

    7 7
    yyuahhy
    7
    6
    5
    4
    3
    2
    1

    输出

    复制

    3
    2
    1
    1
    1
    2
    1

    备注:

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

    直接算超时,AC代码:

    #include<stdio.h>
    #include<string.h>
    #define N 1000020
    char a[N];
    int temp[30],dp[N];
    int main()
    {
    	int i,n,m;
    	while(scanf("%d%d",&n,&m)!=EOF)
    	{
    		memset(dp,0,sizeof(dp));
    		memset(temp,0,sizeof(temp));
    		getchar();
    		for(i=1;i<=n;i++)
    		{	
    			scanf("%c",&a[i]);
    			dp[i]=dp[temp[a[i]-96]]+1;
    			temp[a[i]-96]=i;
    		}
    		while(m--)
    		{
    			scanf("%d",&i);
    			printf("%d
    ",dp[i]);
    		}
    	}
    	return 0;
    }
  • 相关阅读:
    递归
    正则表达式的理解
    JSP九大置对象
    Cookie的使用
    sql语句按照时间段查询
    文件拷贝 上传下载 输入流输出流个人小结,仅供自己使用
    动态SQL 与sql片段 foreach
    ResultMap
    hibernate
    idea
  • 原文地址:https://www.cnblogs.com/zyq1758043090/p/10003002.html
Copyright © 2011-2022 走看看