bzoj 1566 NOI2009 管道取珠

2022-08-02 11:45:10 字數 920 閱讀 5587

第一行包含兩個整數n, m,分別表示上下兩個管道中球的數目。 第二行為乙個ab字串,長度為n,表示上管道中從左到右球的型別。其中a表示淺色球,b表示深色球。 第三行為乙個ab字串,長度為m,表示下管道中的情形。

僅包含一行,即為 sigma(ai^2) i從1到k 除以1024523的餘數。

2 1abb5

樣例即為文中(圖3)。共有兩種不同的輸出序列形式,序列bab有1種產生方式,而序列bba有2種產生方式,因此答案為5。 

【大致資料規模】

約30%的資料滿足 n, m ≤ 12; 

約100%的資料滿足n, m ≤ 500。

這個題真的是妙不可言。。。

考慮乙個這樣的轉化,就是開兩把遊戲(有四個管子)。。。

那麼問題轉化為在這兩把遊戲中,輸出序列相同的有多少次。。。

設dp[i][j][k][p],表示第一把遊戲從上方取了i個,從下方取了j個,第二把遊戲從上方取了k個,從下方取了p個,

且現在兩把遊戲的輸出序列相同的方案數。。。

因為要輸出序列相同,那麼轉移就比較好寫了,就是比較是否相同進行轉移即可。。。

由於輸出序列的長度相同,i+j==k+p,那麼p這一維可以直接算出來。。。

// made by qt666

#include#include#include#include#includeusing namespace std;

typedef long long ll;

const int n=505;

const int rhl=1024523;

int dp[n][n][n],n,m;

char a[n],b[n];

int main()

}} printf("%d\n",dp[n][m][n]);

return 0;

}

bzoj1566 NOI2009 管道取珠

第一行包含兩個整數n,m,分別表示上下兩個管道中球的數目。第二行為乙個ab字串,長度為n,表示上管道中從左到右球的型別。其中a表示淺色球,b表示深色球。第三行為乙個ab字串,長度為m,表示下管道中的情形。output 僅包含一行,即為 sigma ai 2 i從1到k 除以1024523的餘數。sa...

bzoj1566 NOI2009 管道取珠

題目大意 兩個輸入管道裡面分別有n m個有著兩種顏色的珠子。只從右端取。依次於輸出管道中形成。設對於一種的輸出方式有ai 種產生方法有k種不同的輸出方式,求 k i 1a 2i。題解 智商dp 看到a 2i想到什麼呢?ai ai 嗯.a i 是相同方式的產生方法的個數,那麼ai ai 就可以看成兩個...

bzoj1566 Noi2009 管道取珠

題意 兩個棧不斷pop,共c n m,n 種,ai表示每個相同序列的方案數,求 ai 2 sol 首先,將相同的序列看做兩個人選取後相同的方案數 考慮dp,dp i j k l 表示第乙個人從上面選i個,下面選j個,第二個人上k個下l個的答案 顯然第四維狀態可以由前三維決定 不過還是不太好轉移,將狀...