time limit: 3 sec
memory limit: 128 mb
submit: 6
solved: 4 [
submit][
status][
web board]
據某省水產部門通報,a市大面積範圍水產養殖區爆發adh氏菌疫情,導致大量魚苗死亡,養殖戶經濟損失巨大。必須盡快控制疫情,使水產養殖秩序回歸正常。
此次adh氏菌疫情傳染範圍較大,涉及到 m 個地區。要想對某個地區i疫情進行控制,必須先控制住上游地區i-1的疫情,再對該地區監測,管理,施藥才能徹底清除傳染性,真正做到水體改良,水質改善。
不妨設m 個地區的編號1,2,…,m,首先,地區1的疫情得到控制後,才能在1天後控制地區2。類推,僅當地區i的疫情得到控制後,1天後才能去控制地區i+1;當第m個地區疫情被控制後,才算徹底控制住a市疫情。
如何做到早發現,早報告,早隔離,早治理,按照屬地化管理原則,a市準備建立 n 個防疫中心。當乙個防疫中心啟用後,它可以對方圓半徑 r 範圍內的地區疫情加以控制,並且持續控制5天。n 個防疫中心也不是同時啟動,當乙個防疫中心啟用5天後,才能啟動另乙個防疫中心。
啟用乙個防疫中心需要大量的人力,物力。請你設計乙個方案,如何啟用盡可能少的防疫中心就能夠對a市所有疫情加以控制。
【約束條件】
1≤k≤
5 1 ≤m, n≤100,1≤r≤1000, 0≤所有座標x,y≤10000
所有資料都是整數。 資料之間有乙個空格。
第一行: k表示有多少組測試資料。
接下來對每組測試資料:第1行
: m n r
第2~m+1
行: x1
i y1i 表示第 i 地區所在的座標 i=1,…,m
第m+2~m+n+1
行: x2
j y2j 表示第 j 防疫中心的座標 j=1,…,n
對於每組測試資料,輸出佔一行:最少啟用的防疫中心數量1
4 3 6
0 66 6
6 00 0
0 31 1
1 5 2
啟用3號防疫中心可以控制地區1,2
啟用2號防疫中心可以控制地區3,4
解題思路:
這個題可以看作是
最少呼叫幾個防疫中心可以控制所有的病情
如果這個前提都看不出來 歡迎私聊
(1)考慮每個防疫中心能控制多少有疫情的城市 (2)假設動用第k個防疫中心,那麼用遞迴的方法找出可以滿足條件的所有的防疫中心。
遞迴之前的防疫中心不再考慮 從k,k+1,....n
(3)mmk 用來記錄所呼叫的最少的防疫中心是幾個
**如下:
#include#include#includeusing namespace std;
typedef struct
coord; //用結構體存城市和防疫中心的座標
int m, n, r, mmk= 101;
int correct[100] = ; //地區改善情況的陣列
coord area[100], project[100]; //地區陣列 防疫中心陣列
void findmindevice(int k, int sum)
} if (flag == 0 && sum > k;
while (k--)
for (int k = 0; k < n; k++)
findmindevice(k, 1);
cout << mmk<< endl;
} return 0;
}
疫情控制 blockade
分析 首先所有點肯定都是盡可能往上走為先。然後因為直接處理感覺很麻煩,這裡考慮二分來。二分時間,然後就變成了判定的問題了。那麼點被分為兩類,一種是可以走到根節點還有剩餘的,一種是走不到的。可以發現走不到的話 就盡可能往上走。然後停在盡可能上面。然後走到根節點還有剩餘的時間的,就往一些第二層節點走 因...
NOIP 2015 疫情控制
評測傳送 二分答案 貪心。越往上越優,所以在列舉的範圍內,能往上就往上。細節處理很重要。我的 有一處是待優化的,調了一下午,身心俱疲,不想再寫了。就這樣吧 95分。include include include include include include define ll long long ...
Luogu P1084 疫情控制
luogu p1084 疫情控制 再水篇部落格 2019.8.28 騙 1分未遂 打了個二分不會check 勸退 2019.9.29 乙個月了啊 怎麼說都要打下來 這個題解好哇 注釋了一些在 裡 include include include using namespace std define l...