據說資格賽水過一道題就行。。。就寫那個簽到題吧。orz
題目糊上,,,
度度熊的字串課堂開始了!要以像度度熊一樣的天才為目標,努力奮鬥哦!
為了檢驗你是否具備不聽課的資質,度度熊準備了乙個只包含大寫英文本母的字串 a[1,n]=a1a2⋯ana[1,n]=a1a2⋯an,接下來他會向你提出 qq 個問題 (l,r)(l,r),你需要回答字串 a[l,r]=alal+1⋯ara[l,r]=alal+1⋯ar 內有多少個非空子串是 a[l,r]a[l,r] 的所有非空子串中字典序最小的。這裡的非空子串是字串中由至少乙個位置連續的字元組成的子串行,兩個子串是不同的當且僅當這兩個子串內容不完全相同或者出現在不同的位置。
記 ∣s∣∣s∣ 為字串 ss 的長度,對於兩個字串 ss 和 tt ,定義 ss 的字典序比 tt 小,當且僅當存在非負整數 k(≤min(∣s∣,∣t∣))k(≤min(∣s∣,∣t∣)) 使得 ss 的前 kk 個字元與 tt 的前 kk 個字元對應相同,並且要麼滿足 ∣s∣=k∣s∣=k 且 ∣t∣>k∣t∣>k,要麼滿足 kk一開始看這個題,md這麼複雜,一看就是dalao出的題。
所以這個題就變成了,在一段字元區間中統計最小的那個字母出現了幾次。
emmmmm,能把這麼水的乙個題說的這麼高大上,我也是給出題人跪了。。。orz
用個字首和思想。統計一下到當前位置每個字母出現幾次,陣列下標1~26表示a~z出現的次數。
查詢的時候從1到26迴圈若a[r]-a[l-1]不為零,就是他了,輸出,跳出迴圈(這樣字典序最小,因為相當於從a向z找)。
說了這麼多我相信都是廢話,諸位大佬肯定能a掉這個題。emmmmmm
上**。(醜得一逼)
1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include9 #include 10 #include 11
#define ll long long
12using
namespace
std;
13void read(int &x)20}
21struct
h cc[100000+5
];24
int t = 0
,n,q,l,r,minn,num,cntt;
25int cnt['
z'+5
];26
char ch[100000+5
];27
intmain()
39for(int i = 1;i <= q;i++)
45else51}
52}53}
54}55return0;
56 }
2015百度之星資格賽1002
problem description 列變位法是古典密碼演算法中變位加密的一種方法,具體過程如下 將明文本元分割成個數固定的分組 如5個一組,5即為金鑰 按一組一行的次序整齊排列,最後不足一組不放置任何字元,完成後按列讀取即成密文。比如 原文 123456789 金鑰 4 變換後的矩陣 1234 ...
2015百度之星資格賽1002
題目名稱 列變位法解密 problem description 列變位法是古典密碼演算法中變位加密的一種方法,具體過程如下 將明文本元分割成個數固定的分組 如5個一組,5即為金鑰 按一組一行的次序整齊排列,最後不足一組不放置任何字元 完成後按列讀取即成密文。比如 原文 123456789 金鑰 4 ...
2018百度之星資格賽 1002子串查詢
problem description 度度熊的字串課堂開始了!要以像度度熊一樣的天才為目標,努力奮鬥哦!為了檢驗你是否具備不聽課的資質,度度熊準備了乙個只包含大寫英文本母的字串 a 1,n a 1 a 2 cdots a na 1,n a 1 a 2 a n 接下來他會向你提出 qq 個問題 l,...