日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

2018百度之星程序设计大赛 - 资格赛 1002 子串查询

發(fā)布時間:2025/3/8 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2018百度之星程序设计大赛 - 资格赛 1002 子串查询 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

子串查詢

?

?Accepts: 1262

?

?Submissions: 5335

?Time Limit: 3500/3000 MS (Java/Others)

?

?Memory Limit: 262144/262144 K (Java/Others)

Problem Description

度度熊的字符串課堂開始了!要以像度度熊一樣的天才為目標,努力奮斗哦!

為了檢驗?zāi)闶欠窬邆洳宦犝n的資質(zhì),度度熊準備了一個只包含大寫英文字母的字符串?A[1,n] = a_1 a_2 \cdots a_nA[1,n]=a?1??a?2???a?n??,接下來他會向你提出?qq?個問題?(l,r)(l,r),你需要回答字符串?A[l,r] = a_l a_{l+1} \cdots a_rA[l,r]=a?l??a?l+1???a?r???內(nèi)有多少個非空子串是?A[l,r]A[l,r]?的所有非空子串中字典序最小的。這里的非空子串是字符串中由至少一個位置連續(xù)的字符組成的子序列,兩個子串是不同的當且僅當這兩個子串內(nèi)容不完全相同或者出現(xiàn)在不同的位置。

記?|S|∣S∣?為字符串?SS?的長度,對于兩個字符串?SS?和?TT?,定義?SS?的字典序比?TT?小,當且僅當存在非負整數(shù)?k(\leq \min(|S|,|T|))k(≤min(∣S∣,∣T∣))?使得?SS?的前?kk?個字符與?TT?的前?kk?個字符對應(yīng)相同,并且要么滿足?|S| = k∣S∣=k?且?|T| > k∣T∣>k,要么滿足?k < \min(|S|,|T|)k<min(∣S∣,∣T∣)?且?SS?的第?k+1k+1?個字符比?TT?的第?k+1k+1?個字符小。例如 "AA" 的字典序比 "AAA" 小,"AB" 的字典序比 "BA" 小。

Input

第一行包含一個整數(shù)?TT,表示有?TT?組測試數(shù)據(jù)。

接下來依次描述?TT?組測試數(shù)據(jù)。對于每組測試數(shù)據(jù):

第一行包含兩個整數(shù)?nn?和?qq,表示字符串的長度以及詢問的次數(shù)。

第二行包含一個長為?nn?的只包含大寫英文字母的字符串?A[1,n]A[1,n]。

接下來?qq?行,每行包含兩個整數(shù)?l_i,r_il?i??,r?i??,表示第?ii?次詢問的參數(shù)。

保證?1 \leq T \leq 101≤T≤10,1 \leq n,q \leq 10^51≤n,q≤10?5??,1 \leq l_i \leq r_i \leq n1≤l?i??≤r?i??≤n。

Output

對于每組測試數(shù)據(jù),先輸出一行信息 "Case #x:"(不含引號),其中 x 表示這是第?xx?組測試數(shù)據(jù),接下來?qq?行,每行包含一個整數(shù),表示字符串?A[l,r]A[l,r]?中字典序最小的子串個數(shù),行末不要有多余空格。

Sample Input

1 2 3 AB 1 1 1 2 2 2

Sample Output

Copy

Case #1: 1 1 1

前綴字母A~Z的個數(shù),復(fù)雜度(O(n))

#include <iostream> #include <cstdio> #include <string> #include <cstring> #include <cmath> #include <algorithm> #include <queue> #include <map> #include <set> #include <stack> #define fora(i,a,b) for(i=a;i<b;i++) #define fors(i,a,b) for(i=a;i>b;i--) #define fora2(i,a,b) for(i=a;i<=b;i++) #define fors2(i,a,b) for(i=a;i>=b;i--) #define PI acos(-1.0) #define eps 1e-6 #define INF 0x3f3f3f3ftypedef long long LL; typedef long long LD; using namespace std; const int maxn=1e5+11; char str[maxn]; int qz[maxn][33]; int main() {int T,t=0,len;scanf("%d",&T);while(T--){int n,q;scanf("%d%d%s",&n,&q,str);int i,j;len=strlen(str);fora(i,0,len){fora(j,0,26){qz[i+1][j]=qz[i][j];}qz[i+1][str[i]-'A']++;}printf("Case #%d:\n",++t);while(q--){int L,R;scanf("%d%d",&L,&R);fora(i,0,26){//printf("****%c %d %d\n",i+'A',qz[R+1][i],qz[L][i]);if(qz[R][i]-qz[L-1][i]>0){printf("%d\n",qz[R][i]-qz[L-1][i]);break;}}}}return 0; }

?

轉(zhuǎn)載于:https://www.cnblogs.com/107acm/p/9428305.html

總結(jié)

以上是生活随笔為你收集整理的2018百度之星程序设计大赛 - 资格赛 1002 子串查询的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。