ssl1211 好文章 字串

2021-08-30 17:57:06 字數 917 閱讀 2423

nodgd寫了一篇文章,自認為這是一篇好文章。nodgd的文章由n個小寫英文本母組成。文章的乙個子串指的是文章中的一段連續的字母,子串的長度就是這一段的字母個數。nodgd在文章中用了排比、對偶、前後照應之類的手法,所以就有很多個子串是相同或者相近的。為了向大家證明這是一篇好文章,nodgd決定給自己的文章進行評分。nodgd首先確定了乙個整數m,然後統計出文章中有多少個不相同的長度為m的子串,這個數量就是文章的評分。

然而,nodgd懶得老老實實計算這個評分了,就把任務丟給了你。

對於30%的資料,1≤m≤n≤200; 對於50%的資料,1≤m≤n≤2000; 對於另外20%的資料,1≤m≤50≤n≤200000; 對於100%的資料,1≤m≤n≤200000。

把字串每一位用乙個數m(最好是質數)乘起來,然後取出一段時就用末位的值減去首位前一位*m的長度次方,得到的是就是它的hash值

要採用雙雜湊,用兩個大的質數,比如1e9+7,998224353,或者一些奇怪而沒有規律的數,防止被卡

然後就可以了

#include using namespace std;

const int lwq=100000007,hxh=99824353;

int n,m,ans;

char a[200005];

bool a1[lwq+6],a2[hxh+6];

long long h1[200005],h2[200005];

long long p1,p2;

int main()

p1=p2=1;

for (int i=1;i<=m;i++)

p1=(p1*181)%lwq,p2=(p2*107)%hxh;

for (int i=m;i<=n;i++)

printf("%d",ans);

}

關於字串的好文章

字串 char dat 5 abcd 在記憶體中占用4 1 5個位元組,其中前4個位元組分別儲存 abcd,最後1個位元組是 0 表示abcd字串的結束位置,這裡dat的記憶體空間至少要5個位元組,如果是4個位元組,char dat 4 則 你一定不要將dat當作字串來使用,否則可能出現如下問題 1...

1211 分割平衡字串

在乙個 平衡字串 中,l 和 r 字元的數量是相同的。給出乙個平衡字串 s,請你將它分割成盡可能多的平衡字串。返回可以通過分割得到的平衡字串的最大數量。示例 1 輸入 s rlrrllrlrl 輸出 4 解釋 s 可以分割為 rl rrll rl rl 每個子字串中都包含相同數量的 l 和 r 示例...

文章標題 整數與字串互轉

先來看兩個錯誤的實現 1.整數轉換成字串 void inttostring char str,int n while n 10 0 將整數反序放入字串中 str i n 0 str i 0 別忘了字串結束標記 i i 指向最後乙個字元的下標 int j 0,sign 0 if str 0 for j...