時間限制: 2 sec 記憶體限制: 128 mb
在一片草原上,有n只兔子無憂無慮地生活著。這片草原可以劃分成m×m的方陣。每個方格內最多有乙隻兔子。
一位飼養員負責餵養這些兔子。為了方便,她需要用籬笆建造最多k座圍欄,將草原上的兔子全部圍起來。
圍欄需要滿足以下條件:
(1)必須沿著網格線建造;
(2)每座圍欄是乙個不與自身重疊或相交的封閉迴路;
(3)各座圍欄之間互相不重疊、不相交;
(4)一座圍欄不能被圍在另一座圍欄裡面。
請你幫助飼養員計算一下圍欄總長度的最小值。
輸入檔名為fence.in
輸入第1行為三個整數m,k,n。
接下來n行每行為一對正整數x,y,表示第x行第y列的方格中有乙隻兔子。
輸出檔名為fence.out
輸出僅1行,為乙個正整數,表示圍欄總長度的最小值。
【輸入輸出樣例1】
fence.in
6 1 4
1 3
4 2
4 4
6 4
fence.out
18【輸入輸出樣例2】
fence.in
6 2 4
1 3
4 2
4 4
6 4
fence.out
16 這道題因為時間不多了,就打了k=1,2時的情況,就記錄一下行列上的最大(小)值,加一加除以二,在判斷從哪個節點斷開。
其實100分的思想也差不多,就是dfs一下,記錄當前是第幾個數,列舉其在哪個集合,當前最小花費是多少
**是找了乙份,風格極好:
貼一下標程
#include#include#include
#define n 17
using
namespace
std;
intxx[n],yy[n],n,m,k,lx[n],ly[n],rx[n],ry[n],ans;
void dfs(int now,int
set,int
cost)
intax,ay,bx,by,spend;
for(int i=1;i<=set;i++)
}int
main()
ans=1e9;
dfs(
1,0,0
); printf(
"%d\n
",ans);
return0;
}
測試5T3 星座
星空中有n顆星星,有n 1對星星間被人為地連上了線,每條連線有各自的長度。所有星星被連成了乙個整體。現在,你要在星系中找到乙個最大的十字形星座。即,你要找到兩條星星構成的路徑,使得它們恰好有一顆公共星 這顆公共星不能是某條路徑的端點 且兩條路徑的長度和最大。左圖紅線表示了乙個合法的十字形星座,而右圖...
2017 4 2測試T4 game 搜尋
第四題 50分 每個測試資料2分 提交檔案 game.exe 輸入檔案 game.in 輸出檔案 game.out 題目描述 下面介紹乙個小遊戲 在乙個m n的板上,有部分格仔被標記為障礙 例如上圖黑色標示的格仔 你任選乙個空白格仔放置乙個小球 如上圖灰點所示 並選擇小球滾動的方向 上,下,左,右 ...
Day4 T3搜尋 T4數學題排列組合
很出名的題吧,費解的開關 同t2一樣也是一題很考思考的 附上題解再解釋吧 對於每個狀態,演算法只需要列舉第一行改變哪些燈的狀態,只要第一行的狀態固定了,接下來的狀態改變方法都是唯一的 每一行需要改變狀態的位置都在上一行中不亮的燈的正下面,因為只有這樣才能使上一行的燈全亮。我們列舉第一行的狀態改變方法...