大水題!!!30分鐘ac(算上思考時間),直接模擬就行,加乙個判斷約數的剪枝,再多加幾個剪枝就可以過(資料巨水)
我也就會做暴力的題了。
題幹:
description打地鼠是這樣的乙個遊戲:地面上有一些地鼠洞,地鼠們會不時從洞裡探出頭來很短時間後又縮回洞中。玩家的目標是在地鼠伸出頭時,用錘子砸其頭部,砸到的地鼠越多分數也就越高。
遊戲中的錘子每次只能打乙隻地鼠,如果多隻地鼠同時探出頭,玩家只能通過多次揮舞錘子的方式打掉所有的地鼠。你認為這錘子太沒用了,所以你改裝了錘子,增加了錘子與地面的接觸面積,使其每次可以擊打一片區域。如果我們把地面看做m*n的方陣,其每個元素都代表乙個地鼠洞,那麼錘子可以覆蓋r*c區域內的所有地鼠洞。但是改裝後的錘子有乙個缺點:每次揮舞錘子時,對於這r*c的區域中的所有地洞,錘子會打掉恰好乙隻地鼠。也就是說錘子覆蓋的區域中,每個地洞必須至少有1只地鼠,且如果某個地洞中地鼠的個數大於1,那麼這個地洞只會有1只地鼠被打掉,因此每次揮舞錘子時,恰好有r*c只地鼠被打掉。由於錘子的內部結構過於精密,因此在遊戲過程中你不能旋轉錘子(即不能互換r和c)。
你可以任意更改錘子的規格(即你可以任意規定r和c的大小),但是改裝錘子的工作只能在打地鼠前進行(即你不可以打掉一部分地鼠後,再改變錘子的規格)。你的任務是求出要想打掉所有的地鼠,至少需要揮舞錘子的次數。
hint:由於你可以把錘子的大小設定為1*1
,因此本題總是有解的。
input
第一行包含兩個正整數m和n;
下面m行每行n個正整數描述地圖,每個數字表示相應位置的地洞中地鼠的數量。
output
輸出乙個整數,表示最少的揮舞次數。
sample input33
1212
4212
1sample output
4【樣例說明】
使用2*2的錘子,分別在左上、左下、右上、右下揮舞一次。
【資料規模和約定】
對於100%的資料,1
<=m,n<=100,其他資料不小於0,不大於10^5
**:
#include#include#include
#include
#include
#include
#include
using
namespace
std;
#define duke(i,a,n) for(int i = a;i <= n;i++)
#define lv(i,a,n) for(int i = a;i >= n;i--)
#define clean(a) memset(a,0,sizeof(a))
const
int inf = 1
<< 30
;typedef
long
long
ll;typedef
double
db;template
void read(t &x)
template
void
write(t x)
int n,m,tot = 0,s = 0
;int mp[105][105],k[105][105
];bool judge(int l,int
r) duke(i,
1,n - l + 1
) }}
}}
}duke(i,
1,n)
}return
true;}
intmain()
}lv(i,tot,1)}}
}}
return0;
}/*3 31 2 1
2 4 2
1 2 1
*/
UPC 4170 打地鼠 暴力列舉
打地鼠是這樣的乙個遊戲 地面上有一些地鼠洞,地鼠們會不時從洞裡探出頭來很短時間後又縮回洞中。玩家的目標是在地鼠伸出頭時,用錘子砸其頭部,砸到的地鼠越多分數也就越高。遊戲中的錘子每次只能打乙隻地鼠,如果多隻地鼠同時探出頭,玩家只能通過多次揮舞錘子的方式打掉所有的地鼠。你認為這錘子太沒用了,所以你改裝了...
2014 8 2模擬賽 打地鼠遊戲
題目描述 最近2320學長經常玩這個遊戲,以至於敲擊每個地鼠只要1秒。他在想如何敲擊能使總分最大。輸入描述 輸入包含3行,第一行包含乙個整數n 1 n 100000 表示有n個地鼠從地上冒出來,第二行n個用空格分隔的整數表示每個地鼠冒出後停留的時間 maxt 50000 第三行n個用空格分隔的整數表...
題解 洛谷P2484 打地鼠(模擬)
對於錘子的大小,我們可以列舉。然後模擬對要砸的部分進行操作,對該區域減去砸的地方左上角的數 也就是次數 如果小於零就return false。這樣會浪費許多時間。我們可以從大到小列舉錘子,並且只有所有地洞地鼠之和 錘子體積為0時才進行操作,另外,只有當地鼠和 錘子體積小於等於已得到答案的最小值時才砸...