思路:
直接列舉字串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 進行預處理。然而它最大的問題就是執行速度太慢,所以在很多場合下暴力字串匹配演算法並不是那麼有用。我們需要一些更快的方法來...