牛客練習賽53,C(字典樹 暴力)

2021-09-28 13:37:26 字數 1446 閱讀 8537

想到了字典樹求解,但是tle了,後來分析發現當詢問的字串中"_"的個數一多的話,我這個演算法很容易就超時。不過因為我覺得這個演算法其實還是可以的,而且以前也有過這種情況,所以就分類討論,當詢問的字串中的「1」或「0」的個數超過20個時,我就用字典樹求解,否則我就暴力求解。結果是200ms過題。

#include

#include

#include

#pragma comment(linker,"/stack:102400000,102400000")

using

namespace std;

typedef

long

long ll;

const

int maxn=

1e6+5;

const

int mod=

1e9+7;

int trie[maxn][2

]=;int tot=1;

ll num[maxn]=;

//num陣列一開始是沒有加進去的,結果wa了兩遍

char s[

1<<11]

,s0[

1<<10]

[1<<10]

;void

insert

(int len,

char

* str)

num[p]++;

}ll query

(int len,

int rt,

int pos)

if(trie[rt]

[s[pos]

-'0']!=

0)return

query

(len,trie[rt]

[s[pos]

-'0'

],pos+1)

;return

0ll;

}int

main()

int q;

scanf

("%d"

,&q)

;getchar()

;for

(int i=

1;i<=q;

++i)

else

if(c==

'\n'

)break;}

if(!cnt0)

printf

("%d\n"

,n);

else

if(cnt0<=20)

//非常曲線的做法,但也是乙個小技巧吧

if(flag)

++ans;

}printf

("%d\n"

,ans);}

else

printf

("%lld\n"

,query

(m,0,0

));}

return0;

}

牛客練習賽53(C題)

題目描述 有n個長度為m的文字串,每個串只含有 0 和 1 接下來有q次詢問,每次給出乙個長度為m的字串,且只含有 0 1 和 如10 1 1。下劃線可以匹配 0 或 1 即10 1 1可以匹配101111,101101,100111,100101四種串。每次詢問求出n個文字串中有多少個可以與當前詢...

牛客練習賽53 C 富豪凱匹配串

思路 bitset的簡單題,不幸的是當時的我並不知道bitset,c 的 bitset 在 bitset 標頭檔案中,它是一種類似陣列的結構,它的每乙個元素只能是 或 每個元素僅用 bit空間,省時省空間!include include include include using namespace...

牛客練習賽53 ABC

a 簡單dp include define ll long long using namespace std const ll mod 1e9 7 ll d 1000000 2 ll n intmain cout d n 1 d n 0 mod return0 b 分塊 include define...