第一行乙個正整數\(n\),表示小皮有\(n\)個玩具
接來下一行乙個由小寫字母構成的字串,表示初始的玩具序列。
接來下一行乙個正整數\(q\), 表示小皮的\(q\)種需求
接下來\(q\)行,每行輸入二元組\((x,y)\),含義如題目描述所述
輸出一共\(q\)行,表示每組詢問的答案
5aabaa
2a 1
b 25
3對於第一組詢問,我們可以把\(b\)替換為\(a\),那麼連續為\(a\)的最長序列長度為5
對於第二組詢問,我們可以把與\(b\)相鄰的兩個\(a\)替換為\(b\),那麼連續為\(b\)的最長序列長度為3
對於 10% 的資料:\(n,q<=10\)
對於 30% 的資料:\(n,q<=100\)
對於另外20%的資料:只存在\(a,b\)兩種字元
對於100%的資料:\(n<=2000,q<=3*10^5,1<=y<=n\)
保證所有出現的字元都是小寫字母.
對於這道題,可以發現n的範圍是可以接受\(n^2\)的,而q比較大,如果再套個什麼東西很容t掉,所以我們選擇在外面預處理,dp求出\(dp[i][j]\)表示把原串\(i\)個字元替換為\(j\)的最大長度
實現:\(n^2\)列舉每個子串,再在外面套乙個列舉字母的迴圈,複雜度\(o(26*n^2)\)
所以總複雜度\(o(26*n^2+q)\)
#include#define max(a,b) ((a)>(b)?(a):(b))
#define in(i) (i=read())
using namespace std;
inline int read()
while(i>='0' && i<='9')
return ans*f;
}int n,m;
int dp[2010][30];
char s[2010];
void init()
for(int k=1;k<=n;k++) if(dp[k-1][i]>dp[k][i]) dp[k][i]=dp[k-1][i];//這裡注意一下,因為題目要求替換的數量可能會大於需要替換的字元數量,比如樣例中只有乙個b,單若是題目要求替換兩個a的沒有這個更新就會wa}}
}int main()
}
字串模擬
現在有一些被簡單壓縮的字串,例如 a 120 代表120個a。對於字串acb 3 d 5 e相對於acbbbddddde 現在給你兩個字串cstring,nstring.乙個是被壓縮過的字串,另乙個沒有被壓縮。求nstring是否為cstring的子串,如果是輸出true,否則輸出false.cst...
字串 模擬
description submit statistics discussion 2.0 seconds 256 megabytes 易位構詞 anagram 指將乙個單詞中的字母重新排列,原單詞中的每個字母都出現有且僅有一次。例如 unce 可以被易位構詞成 ecnu 在某些情況下,要求重排而成的...
FJ的字串 字串模擬
description fj在沙盤上寫了這樣一些字串 a1 a a2 aba a3 abacaba a4 abacabadabacaba 你能找出其中的規律並寫所有的數列an嗎?input 僅有乙個數 n 26。output 請輸出相應的字串an,以乙個換行符結束。輸出中不得含有多餘的空格或換行 回...