白準2110:ルータをインストールする
7149 ワード
https://www.acmicpc.net/problem/2110
街の範囲は1~(1軒目と最後の家の距離)です. 正しい答えをすばやく見つけるために、バイナリ検索を使用します. の最初の家が固定されている場合、多くの場合、答えが見つかります.
(注:https://www.acmicpc.net/board/view/50802) 第1家と第i家の距離がmidと一致すると、第i家と第2家の距離 に移る.
https://mygumi.tistory.com/301
http://melonicedlatte.com/algorithm/2018/07/29/132129.html
1.近接
(注:https://www.acmicpc.net/board/view/50802)
2.私の回答
#include <iostream>
#include <algorithm>
#define MAX 200001
using namespace std;
int main() {
int n, c;
cin >> n >> c;
int house[MAX];
for (int i = 0; i < n; i++) {
cin >> house[i];
}
sort(house, house + n);
int start=1, end=(house[n-1]-house[0]), mid;
int ret = 0; //최소거리의 최댓값
while (start <= end) {
mid = (start + end) / 2;
int prev = house[0];
int tem = 1;
for (int i = 1; i < n; i++) {
if (house[i] - prev >= mid) {
tem++;
prev = house[i];
}
}
if (tem >= c) {
ret = max(ret, mid);
start = mid + 1;
}
else end = mid - 1;
}
cout << ret << "\n";
return 0;
}
3.参考
https://mygumi.tistory.com/301
http://melonicedlatte.com/algorithm/2018/07/29/132129.html
Reference
この問題について(白準2110:ルータをインストールする), 我々は、より多くの情報をここで見つけました https://velog.io/@jeongopo/백준-2110-공유기-설치テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol