總網頁瀏覽量
2018年6月18日 星期一
2017.3月大學程式設計先修檢測 實作題 第四題(基地台)
Python Code:
n,k=input().split()#輸入n個服務點與k個基地台
n,k=int(n),int(k) #整數化
a=[] #存入服務點的串列
p=input().split() #將n個服數點串列化及數字化
a=[int(x) for x in p]
a=list(set(a)) #去除重複的元素
a=sorted(a) #服務點排序
l=1 #利用二分搜尋法,令最小直徑為1
r=((a[n-1]-a[0])/k)+1 #最大直徑,當只有一個基地台時的直徑
r=int(r)
while(l<r):
s=-1 #最小比較值
base=0 #先讓基地台為0台
m=(l+r)/2
m=int(m)
for i in range(n): # 若服務點的位置比較大,需增設基地台
if a[i]>s:
s=a[i]+m
base+=1
if base<=k:
r=m
else:
l=m+1
print(r)
Q1:如何找出這k個基地台位置?
Q2:若將這k個基地台平面化,如何找到基地台位置?
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言