智算之道 字串

2021-10-08 02:58:07 字數 1104 閱讀 9850

思路

直接列舉字串s全排列顯然複雜度不允許,考慮到字元只有26種,那麼我們考慮貢獻。

直接去列舉字串t長度為strlen(s)的字串,看對應的字串s的每種字元個數是否一樣。

一樣的話,看這個子串是不是被計算過,沒被計算過,對答案貢獻就加1。對於是否貢獻過,我們可以用map來存字串是否出現過,直接存字串比較耗時,所以可以先對字串雜湊,存字串的雜湊值即可。

#include

using namespace std;

typedef

unsigned

int ll;

const

int n=

3e6+5;

char a[n]

,b[n]

;ll base=

131,has[n]

,h[n]

;mapmp;

int cnt[

130]

;int q[

130]

;int

main()

if(lb>la)

for(

register

int i=

0; b[i]

;++i)

cnt[b[i]]++

;int num=0;

for(

register

int i=

0; i

++i)

q[a[i]]++

;int flag=0;

for(

register

int i=

'a'; i<=

'z';

++i)}if

(!flag)

for(

register

int i=lb; i

++i)}if

(!flag)}}

printf

("%d"

,num)

;return0;

}

2020智算之道複賽

共 5 個測試點 每個測試點 20 分 每個測試點限時 1 秒 執行記憶體上限 512mb 咕咕有兩個數字 a,b 它忘記了 a 的前三位 記除去前三位的 a 為 aa 但它記得 a 與 b 滿足 a 0 mod b 即 a 是 b 的倍數。請你幫它求出有多少種滿足條件的 a。注意 a 沒有前導 0...

智算之道 2020智算之道初賽第三場題解

乙個模擬的水題.int main return 0 這個b.卡的直接醉了 按照題意模擬即可 模擬建議使用雙端佇列deque 最好還是陣列吧,deque必須全域性才可以 被deque全域性卡了乙個小時40分鐘 第乙個坑點是注意摸牌順序 可能會wa 第二個坑點是處理摸牌順序 可能會t 第三個坑點是刪牌標...

字串 Rabin Karp指紋字串查詢演算法

暴力字串匹配 brute force string matching 是子串匹配演算法中最基本的一種,它確實有自己的優點,比如它並不需要對文字 text 或模式串 pattern 進行預處理。然而它最大的問題就是執行速度太慢,所以在很多場合下暴力字串匹配演算法並不是那麼有用。我們需要一些更快的方法來...