题意:给你一个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. C#------如何处理缺少对公共可见类型或成员的xml注释的警告

    出现警告的原因: 使用Swagger框架时 如图,只要加上注释就可以了 使用前: 使用后:

  2. 使用InternetGetConnectedState判断本地网络状态(C#举例)

    函数原型:函数InternetGetConnectedState返回本地系统的网络连接状态. 语法: BOOL InternetGetConnectedState( __out LPDWORD lpd ...

  3. UITextField中文输入法输入时对字符长度的限制 输入时对字符类型的限制

    检索一个字符串的长度的话:直接用 length,去进行判断就行了, 如果要检索字符串是否是自己要限制的类型的话,可以用正则表达式: 举个例子:   匹配9-15个由字母/数字组成的字符串的正则表达式: ...

  4. 配置Django框架为生产环境的注意事项(DEBUG=False)

    问题描述: Django1.10版本中框架中settings.py配置文件 配置文件settings.py配置了下面两项: DEBUG= False ALLOWED_HOSTS = ['*'] #这样 ...

  5. OSG添加回调更新

    class CB : public osg::NodeCallback { virtual void operator()(osg::Node* node, osg::NodeVisitor* nv) ...

  6. Linux中的邮件发送

    这里写出两种常用的邮件发送方式: mail: 需要安装sendmail和postfix两个服务 编辑/etc/mail.rc,在最后添加 set from=scottcho@126.com smtp= ...

  7. Oracle和Mysql中mybatis模糊匹配查询区别

    1.Oracle AND NAME LIKE '%'||#{name}||'%' 2.Mysql AND NAME LIKE "%"#{name}"%"

  8. 为什么WAN口IP和外网IP不一样(不一致)?

    正常的网络应该是动态公网ip,也就是路由器里面的WAN口IP与www.ip138.com上面显示的是一致的,不一致的话则说明该网络被电信或者联通做了NAT转发,导致您获取到了一个虚假的IP地址,无法用 ...

  9. 【大数据系列】MapReduce详解

    MapReduce是hadoop中的一个计算框架,用来处理大数据.所谓大数据处理,即以价值为导向,对大数据加工,挖掘和优化等各种处理. MapReduce擅长处理大数据,这是由MapReduce的设计 ...

  10. 【linux系列】centos安装vsftp

    一.检查vsftpd软件 如果发现上不了网可以修改配置文件中的ONBOOT=no改为yes,然后重启服务试试