upc 路由器安置

2021-10-07 05:36:10 字數 1320 閱讀 8268

時間限制: 1 sec 記憶體限制: 128 mb

題目描述

一條街道安裝無線網路,需要放置m個路由器。整條街道上一共有n戶居民,分布在一條直線上,每一戶居民必須被至少一台路由器覆蓋到。現在的問題是所有路由器的覆蓋半徑是一樣的,我們希望用覆蓋半徑盡可能小的路由器來完成任務,因為這樣可以節省成本。

輸入第一行包含兩個整數m和n,以下n行每行乙個整數hi表示該戶居民在街道上相對於某個點的座標。

輸出僅包含乙個數,表示最小的覆蓋半徑,保留一位小數。

樣例輸入

231

310

樣例輸出
1.0
提示

對於100%的資料,有1≤n,m≤100000,-10000000≤hi≤10000000。

思路二分找直徑

應用upper_bound函式判斷直徑是否符合條件

具體還請看**吧

**:

#include

#include

#include

//#include

#include

#include

#include

#include

#include

#include

#include

#include

#define x first

#define y second

#define inf 0x3f3f3f3f

#define p pair

using

namespace std;

typedef

long

long ll;

const

double eps=

0.01

;const

int n=

1e5+10;

const

int mod=

1000000007

;int m,n,a[n]

;bool

check

(double d)

return1;

}int

main()

sort

(a,a+n)

;int l=

1,r=a[n-1]

-a[0]+

1,mid;

while

(l<=r)

else l=mid+1;

}printf

("%.1f",(

double

)l/2.0);

return0;

}

路由器安置 Routing

一條街道安裝無線網路,需要放置m個路由器。整條街道上一共有n戶居民,分布在一條直線上,每一戶居民必須被至少一台路由器覆蓋到。現在的問題是所有路由器的覆蓋半徑是一樣的,我們希望用覆蓋半徑盡可能小的路由器來完成任務,因為這樣可以節省成本。1 n,m 100000 首先這種問題可以採用二分答案的方法.嘗試...

路由器安置(routing)Solution

首先看一下題面吧 問題描述 一條街道安裝無線網路,需要放置m個路由器。整條街道上一共有n戶居民,分布在一條直線上,每一戶居民必須被至少一台路由器覆蓋到。現在的問題是所有路由器的覆蓋半徑是一樣的,我們希望用覆蓋半徑盡可能小的路由器來完成任務,因為這樣可以節省成本。輸入資料 輸入檔案第一行包含兩個整數m...

分治 路由器安置問題

題設 一條街道安裝無線網路,需要放置m個路由器。整條街道上一共有n戶居民,分布在一條直線上,每一戶居民必須被至少一台路由器覆蓋到。現在的問題是所有路由器的覆蓋半徑是一樣的,我們希望用覆蓋半徑盡可能小的路由器來完成任務,因為這樣可以節省成本。cover函式檢測該直徑是否足夠覆蓋該位址 upper bo...