題目描述
有n個長度為m的文字串,每個串只含有』0』和』1』。接下來有q次詢問,每次給出乙個長度為m的字串,且只含有』0』,『1』和』_』。如10_1_1。下劃線可以匹配』0』或』1』。即10_1_1可以匹配101111,101101,100111,100101四種串。每次詢問求出n個文字串中有多少個可以與當前詢問的串匹配。
輸入描述:
第一行輸入n,m
接下來n行,每行輸入乙個長度為m的01串表示乙個文字串。
第n+2行輸入q
接下來q行,每行輸入乙個長度為m的字串(只包含』0』,『1』,』_』)。
1<=n,m<=1000,1<=q<=3000。
輸出描述:
對於每次詢問,輸出n個文字串中有多少個與當前詢問的串匹配。
輸入
5 6輸出101101
011011
100110
111000
101111
21011_1
1__1__
2一道用bitset的暴力題;3
1.首先要先了解bitset是什麼學習部落格
2.知道了這個以後呢,只要按位模擬就行;還要用到一點位運算的知識
題解:**:設三個二進位制串a,tag,q。若詢問的第i位為』_』,則q[i]=0,tag[i]=0。若第i位為0,則q[i]=1,tag[i]=0。若第i位為1,則q[i]=1,tag[i]=1。對於乙個確定的文字串,若第i位為0,a[i]=0,否則a[i]=1。對於每一位,若a[i]&q[i]==tag[i],則詢問的串和這個文字串匹配。然後bitset優化一下,或按位壓縮成long long。
#include
#define ll long long
#define pa pair
const
int mod=
1e9+7;
using
namespace std;
bitset<
1005
>bi[
1005
],a,b;
//a為存值,b為期望得值
intmain()
}int q;
string ss;
scanf
("%d"
,&q)
;while
(q--
)else
else}}
int sum=0;
for(
int i=
1;i<=n;i++
) cout<}return0;
}
牛客練習賽53,C(字典樹 暴力)
想到了字典樹求解,但是tle了,後來分析發現當詢問的字串中 的個數一多的話,我這個演算法很容易就超時。不過因為我覺得這個演算法其實還是可以的,而且以前也有過這種情況,所以就分類討論,當詢問的字串中的 1 或 0 的個數超過20個時,我就用字典樹求解,否則我就暴力求解。結果是200ms過題。inclu...
牛客練習賽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...