狀壓DP之Bill的挑戰

2022-01-30 13:55:48 字數 1320 閱讀 5274

p2167 [sdoi2009]bill的挑戰

sheng bill不僅有驚人的心算能力,還可以輕鬆地完成各種統計。在昨天的比賽中,你憑藉優秀的程式與他打成了平局,這導致sheng bill極度的不滿。於是他再次挑戰你。這次你可不能輸!(乙個不服輸讓我這個ruoji碼了倆小時)

這次,比賽規則是這樣的:

給n個長度相同的字串(由小寫英文本母和『?』組成),\(s_1,s_2,s_3......s_n\),求與這n個串中的剛好k個串匹配的字串t的個數(答案模1000003)。

若字串\(s_x\)(1≤x≤n)和t匹配,滿足以下條件:

1.\(s_x.length = t.length\)。

2.對於任意的\(1≤i≤s_x.length\),滿足\(s_x[i]='?'\)或者\(s_x[i]=t[i]\)。

其中t只包含小寫英文本母。

本題包含多組資料。

第一行:乙個整數t,表示資料的個數。

對於每組資料:

第一行:兩個整數,n和k(含義如題目表述)。

接下來n行:每行乙個字串。

\(t ≤ 5,n ≤ 15\),字串長度≤ 50。

對於每組資料,輸出方案數目(共t行)

5

3 3???r???

???????

???????

3 4???????

?????a?

???????

3 3???????

?a??j??

????aa?

3 2a??????

???????

???????

3 2???????

???a???

????a??

91485200

871234

67018

#includeusing namespace std;

const int mod=1e6+3;

const int maxn=100010;

int f[50+5][1<<15],g[50+5][30];

char s[16][50+5];

int t,n,m;

int main()

}} int lim=(1

for(int i=0;i}

} int ans=0;

for(int i=0;iif(tot==m)ans=(ans+f[len][i])%mod;

} printf("%d\n",ans);

}}

BZOJ1879bill的挑戰 狀壓DP

本題包含多組資料。第一行 乙個整數t,表示資料的個數。對於每組資料 第一行 兩個整數,n和k 含義如題目表述 接下來n行 每行乙個字串。t 5,m 15,字串長度 50。output 如題sample input 3 3?r?3 4?a?3 3?a?j?aa?3 2a?3 2?a?a?sample ...

大挑戰!狀壓dp!

1349.參加考試的最大學生數 給你乙個 m n 的矩陣 seats 表示教室中的座位分布。如果座位是壞的 不可用 就用 表示 否則,用 表示。學生可以看到左側 右側 左上 右上這四個方向上緊鄰他的學生的答卷,但是看不到直接坐在他前面或者後面的學生的答卷。請你計算並返回該考場可以容納的一起參加考試且...

狀壓dp 玉公尺田 狀壓dp

相關 強相關 327.玉公尺田 狀壓dp 小國王 狀壓dp 是井字形,本題是十字形。思路 狀態計算 時間複雜度 n 2 n 2n o n 22n 12 2 24n 2 n 2 n o n2 12 2 n 2n 2 n o n22n 12 224 看著妥妥超時,但是裡面合法狀態很少 依舊可以過 在此,...