測試4T3 圍欄問題

2022-08-20 18:18:09 字數 1306 閱讀 2483

時間限制: 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一樣也是一題很考思考的 附上題解再解釋吧 對於每個狀態,演算法只需要列舉第一行改變哪些燈的狀態,只要第一行的狀態固定了,接下來的狀態改變方法都是唯一的 每一行需要改變狀態的位置都在上一行中不亮的燈的正下面,因為只有這樣才能使上一行的燈全亮。我們列舉第一行的狀態改變方法...