1 条题解

  • 0
    @ 2025-8-24 22:56:00

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar PR_CYJ
    逆水行舟,不进则退

    搬运于2025-08-24 22:56:00,当前版本为作者最后更新于2024-03-11 21:58:06,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    题目传送门

    思路

    这道题很简单,思路也很明显,一眼就可以看出来是前缀和。

    数据读入时,我们用 aa 数组来进行预处理。其中 aia_i 代表前 ii 个音符的得分和。

    然后是 qq 次询问,我们只需要输出 aral1a_r-a_{l-1} 即可。

    注意不要用 memset!!!否则会 TLE!!!

    代码

    • 切勿抄袭!!!
    #include<bits/stdc++.h>
    using namespace std;
    int a[10000010];
    int main()
    {
    	int T;
    	scanf("%d",&T);
    	while(T--)
    	{
    		string s;
    		int q;
    		cin>>s;
    		scanf("%d",&q);
    		int n=s.size();
    		for(register int i=1;i<=n;i++)
    		{
    			a[i]=a[i-1];//避免使用 memset
    			if (s[i-1]=='P')
    				a[i]+=3;
    			else if (s[i-1]=='p')
    				a[i]+=2;
    			else if (s[i-1]=='G')
    				a[i]++;
    		}
    		for(register int i=1;i<=q;i++)
    		{
    			int l,r;
    			scanf("%d%d",&l,&r);
    			printf("%d\n",a[r]-a[l-1]);
    		}
    	}
    }
    
    • 1

    信息

    ID
    9765
    时间
    1000ms
    内存
    512MiB
    难度
    2
    标签
    递交数
    0
    已通过
    0
    上传者