2018百度之星资格赛1002

没错就是用来造(蹭)福(访)大(问)众(量)的

发现最小的子串只会是A~Z

直接统计前缀和...sum[26]统计一下。。。

 1 #include<cstdio>
 2 #include<cstring>
 3 int sum[100005][26];
 4 int main() {
 5     int t;
 6     scanf("%d",&t);
 7     for(int T=1;T<=t;T++) {
 8         printf("Case #%d:\n",T);
 9         memset(sum,0,sizeof(sum));
10         int n,q;
11         char s[100005];
12         scanf("%d%d",&n,&q);
13         scanf("%s",s+1);
14         for(int i=1;i<=n;i++) {
15             for(int j=0;j<26;j++)
16                 if((s[i]-‘A‘)==j) sum[i][j]=sum[i-1][j]+1;
17                 else sum[i][j]=sum[i-1][j];
18         }
19         while(q--) {
20             int l,r,ans=0;
21             scanf("%d%d",&l,&r);
22             for(int j=0;j<26;j++)
23                 if((sum[r][j]-sum[l-1][j])>0) {
24                     ans=sum[r][j]-sum[l-1][j];
25                     break;
26                 }
27             printf("%d\n",ans);
28         }
29     }
30 }

原文地址:https://www.cnblogs.com/ZincSabian/p/9419213.html

时间: 2024-10-19 22:41:04

2018百度之星资格赛1002的相关文章

字符串处理 2015百度之星资格赛 1002 列变位法解密

题目传送门 1 /* 2 字符串处理:要求解码,然而二维数组开不下,可以直接输出 3 只要在余数的地方判断一下就行了,vector的效率不高 4 另外:感觉麻烦的地方应该纸上写写就清楚了 5 */ 6 #include <cstdio> 7 #include <iostream> 8 #include <algorithm> 9 #include <cstring> 10 #include <string> 11 #include <cma

字符串处理 百度之星资格赛 1002 列变位法解密

题目传送门 1 /* 2 字符串处理:要求解码,然而二维数组开不下,可以直接输出 3 只要在余数的地方判断一下就行了,vector的效率不高 4 */ 5 #include <cstdio> 6 #include <iostream> 7 #include <algorithm> 8 #include <cstring> 9 #include <string> 10 #include <cmath> 11 using namespac

ACM学习历程—BestCoder 2015百度之星资格赛1002 列变位法解密(vector容器)

Problem Description 列变位法是古典密码算法中变位加密的一种方法,具体过程如下 将明文字符分割成个数固定的分组(如5个一组,5即为密钥),按一组一行的次序整齐排列,最后不足一组不放置任何字符,完成后按列读取即成密文. 比如: 原文:123456789 密钥:4 变换后的矩阵: 1234 5678 9xxx (最后的几个x表示无任何字符,不是空格,不是制表符,就没有任何字符,下同) 密文:159263748 再比如: 原文:Hello, welcome to my dream w

2015百度之星资格赛1002列变位法解密

Accepts: 1124 Submissions: 4157 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Problem Description 列变位法是古典密码算法中变位加密的一种方法,具体过程如下 将明文字符分割成个数固定的分组(如5个一组,5即为密钥),按一组一行的次序整齐排列,最后不足一组不放置任何字符,完成后按列读取即成密文. 比如: 原文:123456789 密钥

【2018百度之星资格赛】 A 问卷调查 - 位运算&amp;动规

题目地址:http://bestcoder.hdu.edu.cn/contests/contest_showproblem.php?cid=820&pid=1001 参考博客:在此感谢http://www.cnblogs.com/LQLlulu/p/9419232.html博主,多谢指教,受益良多 Summarize: 1. 使用动态规划的方法,状态转移方程:f[i][p]=f[i-1][p]+i-和第i个答案集合相同的数目: 2. 转移方程中i表示第i份答卷,p表示被选中问题集合,因为每个问题

2018百度之星资格赛A B F

A.调查问卷 度度熊为了完成毕业论文,需要收集一些数据来支撑他的论据,于是设计了一份包含 mm 个问题的调查问卷,每个问题只有 'A' 和 'B' 两种选项. 将问卷散发出去之后,度度熊收到了 nn 份互不相同的问卷,在整理结果的时候,他发现可以只保留其中的一部分问题,使得这 nn 份问卷仍然是互不相同的.这里认为两张问卷是不同的,当且仅当存在至少一个被保留的问题在这两份问卷中的回答不同. 现在度度熊想知道,存在多少个问题集合,使得这 nn 份问卷在只保留这个集合的问题之后至少有 kk 对问卷是

2018百度之星:1002:子串查询

子串查询 Submissions: 12650 Time Limit: 3500/3000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) Problem Description 度度熊的字符串课堂开始了!要以像度度熊一样的天才为目标,努力奋斗哦! 为了检验你是否具备不听课的资质,度度熊准备了一个只包含大写英文字母的字符串 A[1,n] = a_1 a_2 \cdots a_nA[1,n]=a?1??a?2???a?n??

2014年百度之星 资格赛题解

比赛地址 1001: Energy Conversion Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 7787 Accepted Submission(s): 1894 Problem Description 魔法师百小度也有遇到难题的时候-- 现在,百小度正在一个古老的石门面前,石门上有一段古老的魔法文字,读懂这种魔法文字需要耗费大量的

2014百度之星资格赛题解

比赛链接:点击打开链接 ,,杭电把比赛关了代码都找不到了.. 无责任民科还是mark一下好了.. HDU 4823 Energy Conversion 把式子变换一下发现是一个等比数列,高速幂就可以. #include<stdio.h> #include<iostream> #include<string.h> #include<math.h> using namespace std; #define ll __int64 #define inf 10000