戰術遮擋 Python實現

2021-10-09 18:34:58 字數 1633 閱讀 5798

人的視力不能看到掩體之後的事物,在一場戰爭中,我們希望對方盡可能的低估我方的戰鬥力這樣才能出其不意。

某個軍事參謀效仿孫臏,把某些小規模隊隱藏在大規模部隊中,這樣,就使得軍隊數量看起來變少了。已知,如果某部隊a的人數小於等於另一支部隊b人數的1/3, 則可以將a藏於b中,且不被人發現。不支援巢狀,例如a小於b的三分之一,可將a藏於b, 如果又存在b是c的三分之一,不可再將b藏於c。

現在已知我方共有n支部隊,且知道每支部隊的人數,請問,在最優方案下,我們暴露給敵人的部隊數量有幾支。

輸入描述

輸入第一行包含乙個正整數n,表示我方有n支部隊(1<=n<=50000)

第二行有n個整數,表示每支部隊的人數,中間用空格隔開。(1<=a_ i<=10^8)

輸出描述

輸出僅包含乙個整數, 表示最少的遊戲局數。

示例輸入

2 6 7 7 10

示例輸出

我們應讓盡可能小的小軍隊隱藏到盡可能小的大軍隊中(剛剛能夠隱藏就好,不要超出太多,大的軍隊用於隱藏更大的軍隊)

為此,我們可以這麼做:

def

handle

(n,array)

: arr=array

arr=

sorted

(arr)

index=-1

for i in

range

(arr.__len__())

:if arr[i]

<=arr[-1

]/3:

index=i

if index==-1

:return arr.__len__(

) a=arr[

:index+1]

b=arr[index+1:

] res=

0 t=

0for i in

range

(a.__len__())

:for j in

range

(t,b.__len__())

: t+=

1if a[i]

<=b[j]/3

: res+=

1 a[i]

=1000000000

b[j]=0

break

return arr.__len__(

)-res

n=int

(input()

)arr=

st=input()

.split(

' ')

for i in

range

(n):

int(st[i]))

print

(handle(n,arr)

)

執行結果:

輸入:

526

7710

輸出:

4

遊戲中的遮擋透明效果實現

很多時候我們玩一些鎖視角遊戲都能遇到一些障礙物遮擋視野的問題。但是很多時候他們被我們自然而然地忽略掉了。但是沒有這個功能,鎖視角遊戲將會體驗很差。所以很多時候我們需要將擋視角的物體透明化。不過本文並不是基於shader的正常實現方式,所以僅僅是參考。public gameobject player ...

python實現線性回歸 python實現線性回歸

參考 機器學習實戰 machine learning in action 一 必備的包 一般而言,這幾個包是比較常見的 matplotlib,用於繪圖 numpy,陣列處理庫 pandas,強大的資料分析庫 sklearn,用於線性回歸的庫 scipy,提供很多有用的科學函式 我一般是用pip安裝,...

python爬蟲基礎實現 Python實現基礎爬蟲

初次使用urllib實現爬蟲的資料請求 urllib.request.urlopen url 發起get請求 urllib.parse.quote 將中文進行url編碼 from urllib.request importurlopen,urlretrieve,requestfrom urllib....