poj 2446解題報告

2021-06-18 02:39:46 字數 902 閱讀 7715

題目大意:

給你乙個棋盤,讓你用一些1*2的木塊覆蓋這個棋盤,但是棋盤上有些位置是有hole的,這些hole是不能被覆蓋的。如果可以覆蓋的話就輸出yes,否則輸出no。

題目分析:

這道題很容易讓人想起poj2411(也是一道很經典的題目),但是那道題是要求方案數目,這道題是求可否滿足,是完全不同的,一開始感覺這道題資料不是很大,應該是一道搜尋題,但是仔細一計算,發現是會超時的。。其實這是一道二分圖匹配的題目。把hole佔的位置去掉,剩下的分兩組,建成二分圖,怎麼建圖呢?其實可以這樣分,把棋盤上任意乙個當成是黑色的,然後他周圍的四個都是白色的,這樣一次往外延伸,最後把整個棋盤染成黑白相間的,這樣同一顏色的方塊遍當成是一組,組成二分圖。

**實現:

#include #include #include #define max 1500

using namespace std;

int n,m,k,match;

int adjl[max][max];

int mat[max];

bool used[max];

int map[max][max];

file *fi,*fo;

int ink1;

void input()

if(j-1>=1 && map[i][j-1] != -1)

if(j+1<=m && map[i][j+1] != -1)

if(i+1<=n && map[i+1][j] != -1)}}

}match=0;

}bool crosspath(int k)}}

return false;

}void hungary()

}}int main()

return 0;

}

POJ2446 二分匹配

題意 給你乙個n m的格仔,問你能不能用1 2的格仔把他鋪滿,有的位置是不能被鋪的。思路 水題,直接把個相鄰的並且都是可以鋪的點連一條邊然後匹配一遍就行了,提醒乙個地方,就是輸入不能鋪的座標的時候是 先輸入列再輸入行。include include define n node 1500 define...

POJ2446 模板蓋格仔 簡單二分匹配

題意 給你乙個n m的格仔,有的格仔上有坑,然後讓你用1 2的東西去覆蓋所有沒有坑的格仔,不能重疊,坑上也不能放東西覆蓋,問是否能成功。思路 簡單題目,每個格仔和四周的格仔如果可以放在同乙個1 2的裡面那麼就連線一條邊,直接匹配一遍就行了,有的人可能想問為什麼?可以這麼想,首先如果像覆蓋所有的格仔那...

poj解題報告 1328

不得不說,這題是讓我飽受折磨,畢竟第一次做貪心演算法,而且wa了好多次,幸好有學長的幫助,最終找到了問題所在,是在快排上是問題,double高位不可向int低位轉換,由於一開始強制轉換導致雖然樣例和其他的測試資料過了,但還是wa,現在改完了就對了,附上ac ps 這題通過率是22 真心不簡單 如下 ...