題解 POJ1187 隕石的秘密

2022-01-30 16:43:06 字數 659 閱讀 2763

一開始很愉快地想到了乙個dp,然後發現ab+c和a+bc這兩種情況會重複計數。。。

但其實在列舉a+b型時,可以強制令a一定形如(c),這樣就可以避免重複計數了。

#include#include#includeusing namespace std;

const int mod=11380;

int l1,l2,l3,d,f[31][11][11][11];

#define for(i,a,b) for(int i=(a);i<=(b);i++)

int main()

for(a,0,i-1) for(b,0,j) for(c,0,k) now=(now+f[d-1][a][b][c]*f[d][i-a-1][j-b][k-c])%mod;

for(b,0,j-1) for(c,0,k) now=(now+f[d-1][0][b][c]*f[d][i][j-b-1][k-c])%mod;

for(c,0,k-1) now=(now+f[d-1][0][0][c]*f[d][i][j][k-c-1])%mod;

} printf("%d\n",(f[d][l1][l2][l3]-(d?f[d-1][l1][l2][l3]:0)+mod)%mod);

return 0;

}

題解 POJ1187 隕石的秘密

一開始很愉快地想到了乙個dp,然後發現ab c和a bc這兩種情況會重複計數。但其實在列舉a b型時,可以強制令a一定形如 c 這樣就可以避免重複計數了。include include includeusing namespace std const int mod 11380 int l1,l2,...

poj 1187 隕石的秘密

題目大意 求出指定要求的字串的種數,用dp a b c d 記錄有a個 b個,c個 深度為d的字串的個數,然後列舉左邊一段外層加括號的狀態,與右邊對應狀態相乘即可。include include include include include include include include incl...

POJ1187 隕石的秘密

題目大意 定義乙個串 只含有 3種 6個 字元。定義 ss 串 空串是ss表示式。若a是ss表示式,且a串中不含有中括號和大括號,則 a 是ss表示式。若a是ss表示式,且a串中不含有大括號,則 a 是ss表示式。若a是ss表示式,則是ss表示式。定義ss串深度 空串深度為0.若a可以寫成 a 其中...