レーダーの設置
元は中国に直接、英語であります
説明:
海岸線は無限に長い直線であると仮定します。海岸線の片側に位置土地、反対側の海。各島は海のポイントに配置されています。唯一の距離dを覆うレーダインストール(両方の海岸線上に位置する)ので、海洋の条件のいずれかがレーダインストールの島で覆われているため両者間の距離d以下です。
我々は、デカルト座標系を使用して、海岸線をX軸と定義されます。海側のx軸側には、陸側が下方に位置しています。海での各島の位置を考えると、与えられた距離レーダーのインストールをカバーするために、あなたのタスクは、すべての島を覆うように設置レーダーの最小数を見つけるためのプログラムを書くことです。注:そのXYに島の場所は、表現を調整します。
入力
テスト複数のコンポーネントによって入力されました。各テストケースの最初の行は、2つの整数のn(1 <= N <=含ま 1000) 、nは、海洋の島の数であり、dは、Dは、レーダ設置の距離カバレッジです。n行続いて、各ラインは、各島の座標を表す2つの整数を含んでいます。各テスト、空白行間隔の間。
出力
テストケースの数、及びレーダーのインストールを含む各テストケースに必要な最小数、出力ライン、。「-1」取り付け、試験には溶液がないことを示します。
サンプル入力
3 2 1 2 -3 1 2 1 1 2 0 2 0 0
サンプル出力
ケース1:2 ケース2:1
トピックリンク:
https://vjudge.net/problem/OpenJ_Bailian-1328
レーダーは、X軸をする必要があり、[S [i]は.LEFT、S [i]は.RIGHT各島がx軸であるS [i]の.LEFT、及びs [i]は.RIGHT上の対応点を有し、間問題が最小となる点に変換され、全てのセグメントが覆われています
ACコード:
書式#include <iostreamの> の#include <cstdioを> する#include <fstreamの> の#include <アルゴリズム> 書式#include <cmath> の#include <両端キュー> の#include <ベクトル> の#include <キュー> の#include < 文字列 > の#include <CStringの> 書式#include <マップ> 書式#include <スタック> の#include < 設定 > 書式#include <sstream提供> #define MOD 1000000007件 の#define EPS 1E-6 の#defineっ長い長い の#define INF 0x3f3f3f3f #define ME0(X)のmemset(X、0、はsizeof(x))を 使用して 名前空間STD; 構造体のポイント { ダブル左、右; // セグメントが終了 BOOLの 演算子 <(CONSTポイント&C)のconst // ソーティングエンドポイントによっては何 { リターン <左c.left; } }; ポイントは、ポイント[ 1005 ]; int型N-、D; int型 SUM = 0 ; int型のF =を1。; //は各ケース見つける intは(解決) { int型 ANS =1 ; // レーダーの数 ダブルnowpos、 ソート(ポイント、ポイント + N-); // 用(INT I = 0、I <N - 、I ++) // COUT <<ポイント[I] .LEFT << "" < <ポイント[I] .RIGHT << ENDL; nowposポイント= [ 0 ] .RIGHT; のための(INT I = 1 ; I <N-; ++ I) { // COUT << "*" << ENDL; IF(点[I] .LEFT <= nowpos) nowpos = 分(nowpos、ポイント[I] .RIGHT); 他// 現在の行と現在のラインセグメントがない交差点、新しいレーダーを添加しない場合 { ++ nowpos = 点[i]は.RIGHT。 } } 戻りANS。 } int型のmain() { 一方(CIN >> N >> D、N + D) { F = 1 。 合計 ++ ; INT X、Y。 以下のために(int型 i = 0 ; iがn <; ++ I) { CIN >> X >> Y。 もし(Y> D) F = 0 。 他の { ダブル T = D *のDy *のY。 点[i]は.LEFT = X- SQRT(T)。 点[i]は.RIGHT = X + SQRT(T)。 } } もし、(F) のprintf(" ケース%D:%Dを\ n " 、和、解きます())。 他 のprintf(" ケース%D:-1 \ nを" 、合計)。 } }