火車站臺連鎖店 S神 蘇嘉億

2021-10-23 18:38:24 字數 1522 閱讀 8415

簡單來說,就是在一段有n個可以開設站台的位置上,選取其中的m個,使得每兩個站台之間的最小距離取得最大值。

也就是說,你要讓這m個站台中,每兩個站台之間的距離都盡可能大。

因為題目要求輸出最短位置,我們就把最短距離拿來二分!

1.我們需要乙個函式ok來計算以l為最短距離能夠開設多少家店。

函式構造是基本二分bool型別的乙個常用函式:

boolok(

int x)

} last=i;

tmp++;}

return tmp>=m;

}

通過tmp和last這兩個臨時變數來儲存我們的資料,並且判斷a[i]-a[last]是否如果小於,就一直while

if

(i>n)

這個if就不用我多說了吧,(老二分都懂 )

通過i作為列舉邊界,並每次與n作比較

並且當i>n時,就return成功了

last再每次記錄i的數值,簡單來說就是個i-1;

所以每次迴圈後,我們的「答案記錄器」——tmp也要++;

main函式的主要構成呢,也就是由輸入、輸出、二分來構成的;

int l=

0,r=a[n]

-a[1];

while

(r-l>1)

else

}

每次通過二分來縮小範圍,來減少我們的程式用時,避免超時,也讓我們淘汰了雙重for迴圈這種老版的不動腦的暴力搜尋了。

#include

using

namespace std;

int n,m;

int a[

100010];

boolok(

int x)

} last=i;

tmp++;}

return tmp>=m;

}int

main()

sort

(a+1

,a+1

+n);

int l=

0,r=a[n]

-a[1];

while

(r-l>1)

else}if

(!ok(r)

)printf

("%d"

,r);

return0;

}

bye~~~

說個題外話,今天是8月24號,科比兩個球衣號碼紀念日,也在這通過csdn 這個破軟體 來表達對籃球之神科比逝世的懷念。

火車站臺問題

今天流利說筆試火車站臺問題,很簡單的問題,但是我二十分鐘沒做出來,其中遇到了兩個bug,參考迭代器iterator在遍歷時能remove但是不能往集合裡新增元素問題 list集合根據索引刪除資料時用另乙個list集合的資料當索引操作失敗問題即list.remove list1.get index 這...

火車站 題解

題目傳送門 有乙個奇奇怪怪的火車站,奇奇怪怪的站長jtz想要解決乙個奇奇怪怪的問題。現在有 n 列火車要進出站,對於同一列車進站和出站有且只有一次鳴笛,笛聲有 1 m 種音調,要求相鄰的兩次鳴笛之間音調的差的絕對值不能小於 k 不鳴笛笛聲音調看作 1e100 不然耳朵不好的車站管理員xyh分不清楚是...

描寫火車站場景 關於描寫火車站的句子

關於描寫火車站的句子 關於描寫火車站的句子 所以至今,我仍很愛乘火車,臥鋪,靠在枕頭上看書,沉沉 睡去,聽鐵軌一層一層的蕩漾,在記憶中昏暗地穿行,如果我愛 誰,我們一定會乘火車去很遠的地方,一路都是風景,包括思考 時呈現出來的風景。有時候站在路邊看著人來人往,會覺得城市比沙漠還要荒涼。每個人都靠的那...