2018百度之星资格赛T2 子串查询

【题解】
很容易想到暴力做法:对于每个询问暴力查找区间内的最小字母,统计其出现次数。效率O(N^2),无法通过全部数据。
我们可以换一个思路,设f[i][j]为第i个字母(字母‘A'到’Z'分别对应0到25)到第j个位置的出现次数和。
对于每个询问[L,R],我们只要从0到25枚举每个字母,如果满足c[i][R]-c[i][L-1]>0,那么这个区间的这个字母出现过,输出其次数并break即可。
#include<cstdio>
#include<algorithm>
#include<cstring>
#define LL long long
#define rg register
#define N 200010
using namespace std;
int T,t,n,m,l,r,ans,cnt[][N];
char c[N],mn;
inline int read(){
int k=,f=; char c=getchar();
while(c<''||c>'')c=='-'&&(f=-),c=getchar();
while(''<=c&&c<='')k=k*+c-'',c=getchar();
return k*f;
}
inline void Pre(){
memset(cnt,,sizeof(cnt));
}
int main(){
T=t=read();
while(T--){
printf("Case #%d:\n",t-T);
Pre();
n=read(); m=read();
for(rg int i=;i<=n;i++){
c[i]=getchar();
while(c[i]<'A'||c[i]>'Z') c[i]=getchar();
cnt[c[i]-'A'][i]++;
}
for(rg int i=;i<;i++)
for(rg int j=;j<=n;j++) cnt[i][j]+=cnt[i][j-];
while(m--){
l=read(),r=read();
for(rg int i=;i<;i++) if(cnt[i][r]-cnt[i][l-]>){
printf("%d\n",cnt[i][r]-cnt[i][l-]);
break;
}
}
}
return ;
}
Close
2018百度之星资格赛T2 子串查询的更多相关文章
- 2018百度之星资格赛A B F
A.调查问卷 度度熊为了完成毕业论文,需要收集一些数据来支撑他的论据,于是设计了一份包含 mm 个问题的调查问卷,每个问题只有 'A' 和 'B' 两种选项. 将问卷散发出去之后,度度熊收到了 nn ...
- HDU - 6344 2018百度之星资格赛 1001调查问卷(状压dp)
调查问卷 Accepts: 1289 Submissions: 5642 Time Limit: 6500/6000 MS (Java/Others) Memory Limit: 262144 ...
- 【2018百度之星资格赛】F 三原色图 - 最小生成树
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=6349 Knowledge Point: 最小生成树算法Prim&Kruskal Summari ...
- 【2018百度之星资格赛】 A 问卷调查 - 位运算&动规
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=6344 参考博客:在此感谢http://www.cnblogs.com/LQLlulu/p/941923 ...
- 2016百度之星 资格赛ABCDE
看题:http://bestcoder.hdu.edu.cn/contests/contest_show.php?cid=690 交题:http://acm.hdu.edu.cn/search.php ...
- HDU 5685:2016"百度之星" - 资格赛 Problem A
原文链接:https://www.dreamwings.cn/hdu5685/2637.html Problem A Time Limit: 2000/1000 MS (Java/Others) ...
- HDU 5688:2016"百度之星" - 资格赛 Problem D
原文链接:https://www.dreamwings.cn/hdu5688/2650.html Problem D Time Limit: 2000/1000 MS (Java/Others) ...
- HDU 5686:2016"百度之星" - 资格赛 Problem B
原文链接:https://www.dreamwings.cn/hdu5686/2645.html Problem B Time Limit: 2000/1000 MS (Java/Others) ...
- HDU6383 2018 “百度之星”程序设计大赛 - 初赛(B) 1004-p1m2 (二分)
原题地址 p1m2 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total ...
随机推荐
- bzoj2763 [JLOI2011]飞行路线——分层图
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2763 构建分层图. 代码如下: 写法1(空间略大)(时间很慢): #include<i ...
- sql的where条件中包含中文,查询不出来的处理方法
SELECT * FROM phonenumber_info where PROVANCE=N'广东' and CITY=N'中山市'
- Yii2-redis安装配置
编辑composer.json文件 vim composer.json 加入"yiisoft/yii2-redis": "~2.0.0" 执行更新 compos ...
- E20170606-gg
complete adj. 完整的; 完成的; (用以强调) 完全的; 达到结尾的; vt. 完成,使完满; 完成或结束; 填写(表格); process n. 过程; 工序; 做事方法; 工艺 ...
- Django day 36 支付宝支付,微信推送
一:支付宝支付, 二:微信推送
- Golang 入门 : 竞争条件
笔者在前文<Golang 入门 : 理解并发与并行>和<Golang 入门 : goroutine(协程)>中介绍了 Golang 对并发的原生支持以及 goroutine 的 ...
- sourcetree跳过注册方法
很人用git命令行不熟练,那么可以尝试使用sourcetree进行操作. 然鹅~~sourcetree又一个比较严肃的问题就是,很多人不会跳过注册或者操作注册. 废话不多,我们直接开始跳过注册阶段的操 ...
- jQuery——修改网页字体大小
HTML: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <lin ...
- Git管理多个远程分支
在此目录下使用GIT要注意一下几点: 因为这个目录是管理远程多个不同的分支的项目,所以使用GIT之前确认一下几点: 打开git bash,使用命令:git config –list查看目前本地的目录文 ...
- Android 性能优化(13)网络优化( 9)Determining and Monitoring the Docking State and Type
Determining and Monitoring the Docking State and Type PreviousNext This lesson teaches you to Determ ...