HihoCoder 跑馬圈地

2022-08-30 08:57:11 字數 2928 閱讀 5036

原題鏈結 

問題:在乙個m*n的矩形中,圈出一塊最大周長為l的連續區域,滿足區域面積盡可能大,同時區域邊界不能落入內部特定的矩形內。

分析:

1)當周長固定時,圍成正方形覆蓋的面積最大;

2)考慮到矩形的對稱性,內部矩形位置 (陰影區域) 可表示為如下圖所示形式,即滿足:s1 >= s3 且 s1 >= s2 且 s3 >= s4:

3)除非為了避開陰影區域,否則圈出的區域不需內凹;且圈出區域不會半包裹陰影區域,如下圖(1)所示:

4)當l足夠長時,圈出區域全部包含陰影區域可獲得更大的面積,如下圖所示:

其中,上圖中場景(1)顯而易見,而場景(2)也是存在的,例如如下輸入:

9 15 40

5 12 4 5

正確輸出應該是92,而如果輸出69,hihocoder也會ac,應該是平台的測試集有問題。

規則如下:

1)不包含陰影區域,優先圈a1區域,然後圈a2區域,得到s1

2)包含陰影區域,得到s2

3)取s1和s2中較大的值

**如下:

1

defsolve():

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