原題鏈結
問題:在乙個m*n的矩形中,圈出一塊最大周長為l的連續區域,滿足區域面積盡可能大,同時區域邊界不能落入內部特定的矩形內。
分析:
1)當周長固定時,圍成正方形覆蓋的面積最大;
2)考慮到矩形的對稱性,內部矩形位置 (陰影區域) 可表示為如下圖所示形式,即滿足:s1 >= s3 且 s1 >= s2 且 s3 >= s4:
3)除非為了避開陰影區域,否則圈出的區域不需內凹;且圈出區域不會半包裹陰影區域,如下圖(1)所示:
4)當l足夠長時,圈出區域全部包含陰影區域可獲得更大的面積,如下圖所示:
其中,上圖中場景(1)顯而易見,而場景(2)也是存在的,例如如下輸入:
9 15 40正確輸出應該是92,而如果輸出69,hihocoder也會ac,應該是平台的測試集有問題。5 12 4 5
規則如下:
1)不包含陰影區域,優先圈a1區域,然後圈a2區域,得到s1
2)包含陰影區域,得到s2
3)取s1和s2中較大的值
**如下:
1defsolve():
2 n, m, l = (int(x) for x in
raw_input().split())
3 l, r, t, b = (int(x) for x in
raw_input().split())
4 max_hor = max(l, m -r)
5 max_ver = max(t, n -b)6#
規範化:使陰影區域位於矩形右下方,且left >= top
7 ret = do_solve(m, n, l, max_hor, max_ver, r - l, b - t) if max_hor >= max_ver else
\8 do_solve(n, m, l, max_ver, max_hor, b - t, r -l)
9print
(ret)
1011
12def
do_solve(w0, h0, l, l, t, w, h):13#
計算包含陰影區域時,所能圈住的最大面積 s1
14 s1 = calc_max_with_block(w0, h0, l, w, h) if w >= h else\15
calc_max_with_block(h0, w0, l, h, w)
16if l >= 2 * (h0 + l +w):
17return
s118
else:19
#計算不包含陰影區域時,所能圈住的最大面積 s2
20 s2 =calc_max_area(l, h0, l)
21if l > 2 * (h0 +l):
22 w1 = l // 2 - l -h0
23 s2 += w1 *t
24return
max(s1, s2)
2526
27def
calc_max_area(w0, h0, l):
28 w = h = min(w0, h0, l // 4)
29 l -= 2 * (w +h)
30if l <= 1:
31return w *h
32if w0 - w >0:
33 w += min(w0 - w, l // 2)
34elif h0 - h >0:
35 h += min(h0 - h, l // 2)
36return w *h
3738
39def
calc_max_with_block(w0, h0, l, w, h):
40 l -= 2 * (w +h)
41if l <= 1:
42return
043 w1 =w
44 h1 =h
45 delta = min(w - h, h0 - h, l // 2)
46 h +=delta
47 l -= 2 *delta
48if l <= 1:
49return w * h - w1 *h1
50 delta = min(w0 - w, h0 - h, l // 4)
51 w +=delta
52 h +=delta
53 l -= 4 *delta
54if l <= 1:
55return w * h - w1 *h1
56if w0 - w >0:
57 w += min(w0 - w, l // 2)
58elif h0 - h >0:
59 h += min(h0 - h, l // 2)
60return w * h - w1 *h1
6162
63 solve()
hihaCoder1042 跑馬圈地(列舉)
時間限制 10000ms 單點時限 1000ms 記憶體限制 256mb 一覺醒來,小hi穿越回了古代!由於破敵有功,大汗賞賜小hi可以在敵人的草原上跑馬圈地 一天之內騎馬圍住的草原以後就是小hi的牧場。但是令小hi頭疼的是,敵人的草原上有一塊臭水塘。小hi不能騎馬走進臭水塘裡,並且即使小hi的騎馬...
跑馬圈地的雲計算下半場,傳統企業如何上雲?
2018年已經過去,雲計算市場各方角力。沒有人再談論是公有雲還是私有雲,aws也開始進軍私有雲。多家雲廠商均表示雲計算下半場到來了,即 傳統企業 或者 網際網路 企業上雲為主,有的認為在下半場各個雲服務廠商處在同一起跑線上,現在處於跑馬圈地的狀態。另一方面,ai 大資料 雲計算abc三者更進一步融合...
圈地為王示例
圈地為王遊戲樣例程式 最後更新 2013 06 25 21 56 include include include include include include define initial owner 1 無主 define temporary flag 2 臨時標誌 define max a,b...