想到了字典樹求解,但是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...