poj2836狀態壓縮DP 批量加入狀態

2021-06-28 22:45:19 字數 379 閱讀 1146

//題意:給出n個點用長方形來覆蓋,每個點能被多個矩形覆蓋,矩形的邊是平行於軸線的每個矩陣至少覆蓋2個點(包括邊界上的點)

//因為所有矩陣有個整體尺寸如何選擇矩形讓總體面積最小

//要覆蓋兩個點的最小面積矩形是兩個點都在對角線上

//444k125ms

#include #include #include using namespace std;

#define max_n 16

static int dp[1for (int i=0;i::iterator iter = rarray.begin();

for (iter;iter!=rarray.end();++iter)

}printf("%d\n",dp[(1<

POJ 狀態壓縮DP專題

poj3254 狀態壓縮dp的入門題。純粹的二維遞推,還可以通過滾動陣列優化,但這裡並不需要。include include include using namespace std int m,n,f 13 1 12 intmap 13 int in bool check int j,int k i...

poj 2411 狀態壓縮DP

用乙個vector容器來記錄當前狀態下有哪些狀態可以繼承。比如說vec i 裡面的所有的數代表當第一行為i狀態時,第二行的可行狀態。對於狀態i,其二進位制中0的地方表示為當前狀態為豎著的木板的下半部分。其二進位制中1的地方表示為當前狀態為橫著的木板或者豎著的木板的上半部分。include inclu...

poj 1185 狀態壓縮DP

這題開始直接狀態壓縮每行 2 m 然後就tle了。最後看了下別人的發現其實每行的狀態沒有這麼多,因為相鄰兩個大炮的距離不能小於2 所以當m為10 的時候每行的狀態只有60種,每次在得到m的時候,直接搜出這些狀態儲存起來,然後就可以了。ac 如下 include include include inc...