Problem E E 疫情控制

2021-08-20 03:33:33 字數 1873 閱讀 2916

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...