題意:給出乙個n*m的矩形格仔,用2*1的塊去填滿塊的方案數。
2<=n<=1000, 3<=m<=5
思路:由於m比較小,可以用位對其進行記錄,矩形內1*1的格仔的狀態有
橫著的開始,橫著的結尾,豎著的開始,豎著的結尾,所以用0,1,2,3
來分別進行表示,這樣用乙個2bit即可。
為了加速,先把不可能的一些狀態進行剔除,把中間的可能轉移狀態一次計算好,
在狀態轉移的時候直接拿來用就比較省時間。
#include#include#include#include#include#includeusing namespace std;
int dp[1111][1111];
int n,nstate,m,q;
int state[1111];
vectorv[1111];
const int m=1000000007;
int get(int x,int n)
bool isfrist(int x)
{ for (int i=0;i>n>>m;
nstate=1<<(m<<1);
q=0;
for (int i=0;i
hiho 1048 狀態壓縮2
題目大意 用1x2的單元拼接出 nxm的矩形,單元可以橫放或者縱放,n 1000,m 5.求不同的拼接方案總數。分析 實現 include include include using namespace std define bit i,j i 1 j 1 const int mod 1000000...
hiho 9 狀態壓縮二
歷經千辛萬苦,小hi和小ho終於到達了舉辦美食節的城市!雖然人山人海,但小hi和小ho仍然抑制不住興奮之情,他們放下行李便投入到了美食節的活動當中。美食節的各個攤位上各自有著非常多的有意思的小遊戲,其中乙個便是這樣子的 小hi和小ho領到了乙個大小為n m的長方形盤子,他們可以用這個盒子來裝一些大小...
每日一題之 hiho1048 狀壓dp
程式設計之美的課後題也有乙個和整個題目一樣的。p269 題目這個題目的題意很容易理解,在乙個n m的格仔裡,我們現在有兩種型別的磚塊,1 2和 2 1,問一共有多少種方案,可以將整個n m的空間都填滿。最簡單的例子就是下面的了 程式設計之美中題目 某年夏天,位於希格瑪大廈四層的微軟亞洲研究院對辦公樓...