日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【贪心】雷达装置(ybtoj 贪心-1-2)

發(fā)布時間:2023/12/3 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【贪心】雷达装置(ybtoj 贪心-1-2) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

雷達(dá)裝置

ybtoj 貪心-1-2

題目大意

在平面直角坐標(biāo)系中有n個點,現(xiàn)在讓你在x軸上布置雷達(dá),雷達(dá)可以的偵查半徑為d,問你最少布置多少個雷達(dá)

輸入樣例

3 2 1 2 -3 1 2 1

輸出樣例

2

數(shù)據(jù)范圍

1?n?1031\leqslant n \leqslant 10^31?n?103

解題思路

首先通過勾股定理求出偵查該點的雷達(dá)x坐標(biāo)范圍
然后按范圍的右端坐標(biāo)排序
第一個雷達(dá)放在第一個點的右端坐標(biāo)
然后每次判斷上一個點是否在范圍內(nèi)
如果不在就再建一個

代碼

#include<cmath> #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #define ll long long #define abs(y) (y>0?y:-y) using namespace std; int n, ans; double d, x, y, g; struct node {double l, r; }a[1010]; bool cmp(node a, node b) {return a.r < b.r; } int main() {scanf("%d%lf", &n, &d);for (int i = 1; i <= n; ++i){scanf("%lf%lf", &x, &y);if (abs(y) > d)//無法達(dá)到{printf("-1");return 0;}a[i].l = x - sqrt((d * d - y * y));//左右端a[i].r = x + sqrt((d * d - y * y));}sort(a+1,a+1+n,cmp);ans = 1;g = a[1].r;//范圍的右端for (int i = 2; i <= n; ++i)if (a[i].l > g) g = a[i].r, ans++;printf("%d", ans);return 0; }

總結(jié)

以上是生活随笔為你收集整理的【贪心】雷达装置(ybtoj 贪心-1-2)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。