「一本通 1.1 例 3」喷水装置题解
创始人
2024-06-01 19:45:56
0

题目描述

长 LLL 米,宽 WWW 米的草坪里装有 nnn 个浇灌喷头。每个喷头都装在草坪中心线上(离两边各 w2w \over 22w​ 米)。我们知道每个喷头的位置(离草坪中心线左端的距离),以及它能覆盖到的浇灌范围。

请问:如果要同时浇灌整块草坪,最少需要打开多少个喷头?在这里插入图片描述

输入格式

输入包含若干组测试数据。

第一行一个整数 TTT 表示数据组数;

每组数据的第一行是整数 nnn、LLL 和 WWW;

接下来的 nnn 行,每行包含两个整数,给出一个喷头的位置和浇灌半径(上面的示意图是样例输入第一组数据所描述的情况)。

输出格式

对每组测试数据输出一个数字,表示要浇灌整块草坪所需喷头数目的最小值。如果所有喷头都打开也不能浇灌整块草坪,则输出 −1-1−1。

样例输入

3
8 20 2
5 3
4 1
1 2
7 2
10 2
13 3
16 2
19 4
3 10 1
3 5
9 3
6 1
3 10 1
5 3
1 1
9 1

样例输出

6
2
-1

思路

如果一个圆的半径小于等于w2w \over 22w​ 那么这个喷头肯定不选。
再在可能选的喷头中算出每个喷头覆盖范围的左端点和右端点。
在这里插入图片描述
现在w2w \over 22w​和rrr 已知,只需用勾股定理算出x即可。
然后按左端点排序,找能覆盖已覆盖范围的右端点的喷头,选其中右端点最大的一个。

代码

#include using namespace std;struct node
{double x, y;
}a[21000];bool cmp(node x, node y)
{return x.x < y.x;
}int n, l, w, x, r, tmp;int main()
{int T;cin >> T;while(T--){cin >> n >> l >> w;tmp = 0;for (int i = 1; i <= n; i++){cin >> x >> r;if (r <= w / 2) continue;tmp++; a[tmp].x = x - sqrt(r * r - w * w / 4.0);a[tmp].y = x + sqrt(r * r - w * w / 4.0);}sort (a + 1, a + tmp + 1, cmp); double tp = 0;int ans = 0, f = 1;while (tp < l){ans++;double t = tp;for (int i = 1; a[i].x <= t && i <= tmp; i++){if (tp < a[i].y) tp = a[i].y;}if (tp == t && t <= l){cout << -1 << endl;f = 0;break;}}if (f == 1) printf("%d\n",ans);}return 0;
}

相关内容

热门资讯

入库参考案例:深圳市某脉技术股... 深圳市某脉技术股份有限公司诉华某劳动合同纠纷案——用人单位以劳动者在临近下班时间之际离开工位属于严重...
普莱得:公司钉枪产品用于家具制... 投资者提问:最近美特机械生产的C型钉枪卖爆了,都卖断货了。请问贵司有生产同类型的产品吗?董秘回答(普...
6月份债券型基金接近普涨 金鹰... 中国经济网北京7月3日讯(记者 康博) 今年6月份,剔除净值异动的债基后,在有可比业绩的7148只(...
十三届省委第七轮巡视完成反馈   根据省委统一部署,十三届省委第七轮巡视反馈工作近日全部完成。12个省委巡视组分别向本轮巡视的24...
不用空调的夏天?通辽“绿色纳凉... 编辑制作/乌英嘎 图片/连振 张胜军 刘克强等 校对/杨慧玲一审/刘宇琪 二审/田川终审/斯琴塔娜
科技“点金”,吐蕃王冠重现光彩 转自:科创中国“即便现在来看,王冠依旧很惊艳。”青海省海西州民族博物馆馆长朱有振近日接受采访时告诉科...
佛塑科技:2025年6月30日... 投资者提问:最新股东人数董秘回答(佛塑科技SZ000973):您好!2025年6月30日公司股东人数...
“银龄”学员迎来毕业季   日前,新疆老年开放大学的“银龄”学员迎来了毕业时刻。一场以“石榴花开·同心筑梦”为主题的毕业典礼...
今年第3号台风“木恩”在西北太... 转自:北京日报客户端今年第3号台风“木恩”(热带风暴级;英文名称:Mun;名字来源:密克罗尼西亚;名...
重温入党誓词 践行初心使命 图为伦珠孜村党员重温入党誓词。姜文婷 本报记者 袁海霞 摄 为热烈庆祝中国共产党成立104周年,7月...