题意:给你一个1e4长的字符串S,有1e5个询问,每个询问形如 l r c ,其中l,r为左右边界,c为所询问的字符。注意,l,r,可以大于串S的长度,这种情况下认为S自身重复无数次(S+S+S···)。l,r范围1e9。

题解:预处理前缀和(多处理一下),先打表dp[256][10005],dp['a'][x]代表1~x中'a'出现几次,有dp[s[i-1]][i]=dp[s[i-1]][i-1]。然后输出区间时直接输出sum(r)-sum(l),其中sum(x)为计算1~x区间某字符串出现的次数。

坑点:cin,cout用一个就会T。不用前缀和会wa...可能打错了什么。还有这个表达式a[c][n] *( x / n)不遵守交换律

ac代码:

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<string>
#include<string.h>
#include<stdio.h>
using namespace std;
const int maxn = 1e4 + ;
int n, q;
int a[][maxn];
int sum(int x,char c) {
int ans=;
ans = a[c][n] *( x / n);
x %= n;
ans += a[c][x];
return ans;
};
int main() {
int t;
cin >> t;
while (t--) {
memset(a, , sizeof(a)); cin >> n >> q;
string s;
cin >> s;
a[s[]][]++;
for (int i = ; i <= n; i++) {
for (int j = 'a'; j <= 'z'; j++) {
a[j][i] = a[j][i - ];
}
a[s[i - ]][i] = a[s[i - ]][i - ] + ; }
for (int i = ; i <= q; i++) {
int l, r;
scanf("%d%d", &l, &r);
int x = l / n + , y = r / n;
int z = y - x;
//l %= n; r %= n;
char c[];
scanf("%s", c);
printf("%d\n",sum(r,c[]) - sum(l-,c[])); }
}

Gym - 101532D Counting Test 前缀和统计字符串的更多相关文章

  1. js统计字符串中各种字符情况

    问题描述:在一个字符串中,统计出大写字母.小写字母.数字和其他字符各数.这个算法以前在学习java的时候,老师说过,而且说了四种算法.在孔乙己的世界里,茴香豆的"茴"字有四种写法嘛 ...

  2. PHP统计字符串里单词查询关键字

    <?function full_count_words($str) {     //返回完整数组,包含字符串里每个单词 $words = str_word_count($str,1);     ...

  3. 华为OJ平台——统计字符串中的大写字母

    题目描述: 统计字符串中的大写字母的个数 输入: 一行字符串 输出: 字符串中大写字母的个数(当空串时输出0) 思路: 这一题很简单,直接判断字符串中的每一个字符即可,唯一要注意的一点是输入的字符串可 ...

  4. Java基础知识强化之集合框架笔记61:Map集合之统计字符串中每个字符出现的次数的案例

    1. 首先我们看看统计字符串中每个字符出现的次数的案例图解: 2. 代码实现: (1)需求 :"aababcabcdabcde",获取字符串中每一个字母出现的次数要求结果:a(5) ...

  5. JAVA 统计字符串中中文,英文,数字,空格的个数

    面试题:输入一行字符,分别统计出其中英文字母.中文字符.空格.数字和其它字符的个数 可以根据各种字符在Unicode字符编码表中的区间来进行判断,如数字为'0'~'9'之间,英文字母为'a'~'z'或 ...

  6. javascript 统计字符串中每个字符出现的次数

    var str = "abdcadfasfdbadfafdasdfasyweroweurowqrewqrwqrebwqrewqrejwq;;"; // console.log(nu ...

  7. 统计字符串中每个字符出现的次数(Python)

    #统计字符串中每个字符出现的次数 以The quick brown fox jumps over the lazy dog为例 message='The quick brown fox jumps o ...

  8. sql统计字符串出现次数技巧

    在牛客网上看到一道题,感觉挺有趣,是用sql统计字符串出现的次数. 这里提供一种思路,比如统计字符串A中子串B的出现次数: SELECT (LENGTH(A) - LENGTH(REPLACE(A, ...

  9. PTA练习题之6.1统计字符串中大小写字母的个数(10 分)

    统计字符串中大小写字母的个数(10 分) 分别统计字符串中大写字母和小写字母的个数. 函数接口定义: void fun ( char *s, int *a, int *b ); 其中s.a.b 都是用 ...

随机推荐

  1. 【Oracle】两个表Join关联更新

    两个表关联,用B表的字段更新A表的字段. UPDATE ( SELECT A.COL1 A_COL, B.COL2 B_COL FROM table1 A INNER JOIN table2 B ON ...

  2. 【RF库Collections测试】Remove From List

    Name:Remove From ListSource:Collections <test library>Arguments:[ list_ | index ]Removes and r ...

  3. Linux 日常运维

    查看用户信息:w 查看系统负载:uptime 查看系统资源使用情况:vmstat 查看进程动态:top 查看网卡流量:sar 查看网卡流量:nload 查看磁盘读写:iostat 查看磁盘读写:iot ...

  4. Splash plugins_enabled 属性

    plugins_enabled属性可以控制浏览器插件(如 Flash 插件)是否开启.默认情况下,此属性是 false ,表示不开启. function main(splash, args) spla ...

  5. 使用 Beautiful Soup

    Beautiful Soup 用法: (1) 前面我们爬取一个网页,都是使用正则表达式来提取想要的信息,但是这种方式比较复杂,一旦有一个地方写错,就匹配不出来了,因此我们可以使用 Beautiful ...

  6. spine-unity3D 学习笔记

    http://zh.esotericsoftware.com/spine-using-runtimes //skeletonData SkeletonAnimation skeletonAnimati ...

  7. npm yarn

    1.从接触nodejs开始,一直就青睐于npm包管理工具,熟悉的命令以及提供的各种便利,也让自己没有想过更换为其他的:但是,有人也说过“海纳百川,方可走远”.因此还是有必要了解一下其他的包管理工具,比 ...

  8. 简单mysql类

    ---恢复内容开始--- class mysql { private $host; private $user; private $pass; private $database; private $ ...

  9. 【转】strlen源码

    strlen源码剖析 学习高效编程的有效途径之一就是阅读高手写的源代码,CRT(C/C++ Runtime Library)作为底层的函数库,实现必然高效.恰好手中就有glibc和VC的CRT源代码, ...

  10. html2canvas - 项目中遇到的那些坑点汇总(更新中...)

    截图模糊    原理就是讲canvas画布的width和height放大两倍. 后来学习canvas的时候,才了解到这种写法不同于css的宽高设置, 因为css里的只是展示画布显示的大小,不像这样是c ...