P3853 [TJOI2007]路标设置
題目背景
B市和T市之間有一條長長的高速公路,這條公路的某些地方設(shè)有路標,但是大家都感覺路標設(shè)得太少了,相鄰兩個路標之間往往隔著相當長的一段距離。為了便于研究這個問題,我們把公路上相鄰路標的最大距離定義為該公路的“空曠指數(shù)”。
題目描述
現(xiàn)在政府決定在公路上增設(shè)一些路標,使得公路的“空曠指數(shù)”最小。他們請求你設(shè)計一個程序計算能達到的最小值是多少。請注意,公路的起點和終點保證已設(shè)有路標,公路的長度為整數(shù),并且原有路標和新設(shè)路標都必須距起點整數(shù)個單位距離。
輸入輸出格式
輸入格式:
?
第1行包括三個數(shù)L、N、K,分別表示公路的長度,原有路標的數(shù)量,以及最多可增設(shè)的路標數(shù)量。
第2行包括遞增排列的N個整數(shù),分別表示原有的N個路標的位置。路標的位置用距起點的距離表示,且一定位于區(qū)間[0,L]內(nèi)。
?
輸出格式:
?
輸出1行,包含一個整數(shù),表示增設(shè)路標后能達到的最小“空曠指數(shù)”值。
?
輸入輸出樣例
輸入樣例#1:
101 2 1 0 101輸出樣例#1:
51說明
公路原來只在起點和終點處有兩個路標,現(xiàn)在允許新增一個路標,應(yīng)該把新路標設(shè)在距起點50或51個單位距離處,這樣能達到最小的空曠指數(shù)51。
50%的數(shù)據(jù)中,2 ≤ N ≤100,0 ≤K ≤100
100%的數(shù)據(jù)中,2 ≤N ≤100000, 0 ≤K ≤100000
100%的數(shù)據(jù)中,0 < L ≤10000000
?
思路:題目隱含了答案的范圍,可以嘗試二分答案,然后判斷空曠指數(shù)在當前范圍內(nèi)時,能放多少個路燈,如果增設(shè)的路燈數(shù)量大于最多可放的說明答案小了,往大了找,小于說明當前空曠指數(shù)大了,可以小點。
#include<cstdio> #include<iostream> #include<vector> #include<iomanip> #include<queue> #include<stack> #include<algorithm> #include<cstring> #include<cmath> using namespace std;int L, N, K; int num[100005];//在空曠指數(shù)為dist的情況下,能放多少路燈 int fon(int dist) {int cnt = 0;int temp = 0;for (int i = 2; i <= N; i++) {temp = (num[i] - num[i - 1]+1);cnt = cnt + temp / dist;if (temp % dist == 0)cnt--;}return cnt; }int sea(int f, int l) {int ft = f;int lt = l;int t = 0;while (ft <= lt) {t = (ft + lt) / 2;if (fon(t)<=K) {lt = t-1;}else ft = t+1;}return ft; }int main() {cin >> L >> N >> K;for (int i = 1; i <= N; i++) {cin >> num[i];}cout << sea(1, L+1) << endl;return 0; }?
總結(jié)
以上是生活随笔為你收集整理的P3853 [TJOI2007]路标设置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 移动通信(Mobile Communic
- 下一篇: 英语学渣如何看懂全英文的芯片数据手册