UPC 4170 打地鼠 暴力列舉

2021-08-16 06:22:30 字數 1180 閱讀 4507

打地鼠是這樣的乙個遊戲:地面上有一些地鼠洞,地鼠們會不時從洞裡探出頭來很短時間後又縮回洞中。玩家的目標是在地鼠伸出頭時,用錘子砸其頭部,砸到的地鼠越多分數也就越高。

遊戲中的錘子每次只能打乙隻地鼠,如果多隻地鼠同時探出頭,玩家只能通過多次揮舞錘子的方式打掉所有的地鼠。你認為這錘子太沒用了,所以你改裝了錘子,增加了錘子與地面的接觸面積,使其每次可以擊打一片區域。如果我們把地面看做m*n的方陣,其每個元素都代表乙個地鼠洞,那麼錘子可以覆蓋r*c區域內的所有地鼠洞。但是改裝後的錘子有乙個缺點:每次揮舞錘子時,對於這r*c的區域中的所有地洞,錘子會打掉恰好乙隻地鼠。也就是說錘子覆蓋的區域中,每個地洞必須至少有1只地鼠,且如果某個地洞中地鼠的個數大於1,那麼這個地洞只會有1只地鼠被打掉,因此每次揮舞錘子時,恰好有r*c只地鼠被打掉。由於錘子的內部結構過於精密,因此在遊戲過程中你不能旋轉錘子(即不能互換 r和c)。

你可以任意更改錘子的規格(即你可以任意規定r和c的大小),但是改裝錘子的工作只能在打地鼠前進行(即你不可以打掉一部分地鼠後,再改變錘子的規格)。你的任務是求出要想打掉所有的地鼠,至少需要揮舞錘子的次數。

由於你可以把錘子的大小設定為1*1,因此本題總是有解的。

第一行包含兩個正整數m和n;

下面m行每行n個正整數描述地圖,每個數字表示相應位置的地洞中地鼠的數量。

輸出乙個整數,表示最少的揮舞次數。

3 3

1 2 1

2 4 2

1 2 1

4
對於30%的資料,m,n<=5 ;

對於60%的資料,m,n<=30 ;

對於100%的資料,1<=m,n<=100 ,其他資料不小於0,不大於10^5。

因為規定每一錘下去不能有格仔不存在地鼠,所以說只有當地鼠總數是錘子面積的倍數的時候這個錘子才可能砸完地鼠。因為資料量很小,直接列舉錘子的長寬,然後判斷是否是可行解即可。

#include 

const

int maxn = 107;

intmap[maxn][maxn], tmp_map[maxn][maxn], m, n, total, ans = 0x3f3f3f3f;

bool update(int r, int c)

}return

true;

}int main()

bzoj4170 極光(CDQ分治)

time limit 30 sec memory limit 512 mb 若是萬一琪露諾 俗稱rhl 進行攻擊,什麼都好,冷靜地回答她的問題來吸引她。對方表現出興趣的話,那就慢 慢地反問。在她考慮答案的時候,趁機逃吧。就算是很簡單的問題,她一定也答不上來。上古之魔書 天空中出現了許多的北極光,這些...

區間dp P4170 CQOI2007 塗色

傳送門 題目描述 假設你有一條長度為5的木版,初始時沒有塗過任何顏色。你希望把它的5個單位長度分別塗上紅 綠 藍 綠 紅色,用乙個長度為5的字串表示這個目標 rgbgr。每次你可以把一段連續的木版塗成乙個給定的顏色,後塗的顏色覆蓋先塗的顏色。例如第一次把木版塗成rrrrr,第二次塗成rgggr,第三...

P4170 CQOI2007 塗色 題解

同步 原題鏈結 簡要題意 一開始你有乙個長度為 n nn 的無色串,每次可以對乙個區間染上相同的顏色。問最少多少次可以形成目標串。告訴你,這題的藍是假的,太假了,資料也太弱了。完全是個暴力選手亂碾標算用的,其實本題的時間複雜度完全可以做到 o n 3 o n 3 o n3 第一眼看資料範圍還以為是大...