llg的农场(farm)
评测传送门
【题目描述】
llg 是一名快乐的农民,他拥有一个很大的农场,并且种了各种各样的瓜果蔬菜,到了每年秋天,他就可以把所有蔬菜水果卖到市场上,这样他就可以获利。但今年他遇到了一个难题——有许多鸟来到了他的农场偷吃他的瓜果蔬菜。不知所措的 llg 只好求助于 jump,万能的 jump 于是给了 llg 一些稻草人(据说可以驱鸟)。每个庄稼都可以看做是坐标系里面的一个点,当它处于某个稻草人的范围内时就可以视为被保护。可是每个稻草人的辐射范围有限,根据测定,每个稻草人的辐射范围都是一个半径为 R 的圆,llg 很懒,所以他只打算把稻草人放在坐标系的 x 轴上,而任何庄稼(x,y)都满足 y>0。图中的小红点就是庄稼,蓝点即稻草人放的位置。现在请你来帮助 llg设计一个方案,用尽可能少的稻草人来保证所有庄稼都是安全的。若存在无法覆盖的庄稼或者 jump 给的稻草人不够覆盖所有庄稼,请输出-1。
【输入数据】
每个测试点含多组数据
每组数据第一行包含 n,R,C;分别表示庄稼的数量、稻草人的最大覆盖半径,命题人:黎锦灏
稻草人的数量。
接下来 n 行,每行包括两个数 xi,yi 表示一个点的坐标
输入以“0 0 0”结尾【输出数据】
对于每组数据,请输出最小要用多少稻草人,才能保证覆盖所有庄稼。若无法覆
盖或数量不够,请输出-1。【数据约定】
对于 30%的数据,1<=n<=3000
对于 100%的数据, 1<=n<=50000,1<=数据组数<=10,其余数据均保证不会超过 int的范围
思路:
对于任意一个庄稼 我们可以很轻松的得出能覆盖到此庄稼的的稻草人位置 即圆心位置
令庄稼位置为(x,y)
则稻草人的横坐标范围为[x-sqrt(r*r-y*y),x+sqrt(r*r-y*y)] 边界就是庄稼恰好在圆心上
我们求出每个庄稼所对应的圆心范围后 题目就转化成了:
有若干可能互相重合的线段 求最少的点数使每条线段上至少有一点
然后按横坐标排序
贪心 对于排序之后的线段 取最右端为最优(尽可能覆盖到多的点)
具体见代码吧
CODE:
1 #include<iostream> 2 #include<cstdio> 3 #include<cmath> 4 #include<algorithm> 5 #define go(i,a,b) for(register int i=a;i<=b;i++) 6 #define db double 7 #define M 50000+10 8 using namespace std; 9 int read() 10 { 11 int x=0,y=1;char c=getchar(); 12 while(c<'0'||c>'9') {if(c=='-') y=-1;c=getchar();} 13 while(c>='0'&&c<='9') {x=(x<<1)+(x<<3)+c-'0';c=getchar();} 14 return x*y; 15 } 16 int n,r,m,x,y,ans; 17 bool fg; 18 struct node {db l,r;}a[M]; 19 bool cmp(node u,node v){if(u.l!=v.l) return u.l<v.l;return u.r<v.r;} 20 int main() 21 { 22 freopen("1.in","r",stdin); 23 freopen("1.out","w",stdout); 24 while(1) 25 { 26 n=read();r=read();m=read();ans=1;fg=0; 27 if(!n&&!r&&!m) return 0; 28 go(i,1,n) 29 { 30 x=read();y=read(); 31 if(y>r||fg) {fg=1;continue ;} 32 db k=(db)sqrt(r*r-y*y); 33 a[i].l=(db)x-k; 34 a[i].r=(db)x+k; 35 } 36 if(fg) {puts("-1");continue ;} 37 sort(a+1,a+n+1,cmp); 38 db nw=a[1].r; 39 go(i,2,n) 40 { 41 if(a[i].l>nw) {ans++;nw=a[i].r;} 42 else nw=min(nw,a[i].r); 43 } 44 if(ans>m) {puts("-1");continue ;} 45 printf("%d\n",ans); 46 } 47 return 0; 48 }View Code
转载于:https://www.cnblogs.com/forward777/p/10338294.html
llg的农场(farm)相关推荐
- java设计模式之—OO面向对象思维 Object Oriented(农场一头小母牛,每年生头小母牛,母牛5岁产母牛,20年上多少牛?)
题目:农场一头小母牛,每年生头小母牛,母牛5岁产母牛,20年上多少牛? 目的:1.考验初学者面向对象设计理念.2.考验初学者的逻辑思维能力以及计算能力. 注:不考虑其他现实中的逻辑,比如没有公牛怎么生 ...
- 关于Java“回调”的详细理解及使用
本文由"言念小文"原创,转载请说明文章出处 一.前言 接触java快六年了,从事软件开发工作也三年多了.感谢那些知名或不知名的大神一篇篇精彩博文,帮助我 从一个开发小白一步步成长为 ...
- linux测试网页装载时间,如何用Flood测试Web服务器响应时间
当你设置好服务器投入使用后,你最关心的事莫过于服务器的性能了.你可以用一些手动的方法进行测试,但手动方法有很多局限性. 先不论手工测试方法所投入的时间和精力问题,用手工方法测试的一大不足就是它不容易揭 ...
- bat文件设置dns服务器,.bat文件设置IP、DNS
这几天遇到个烦心事,每次开机之后都要去手动去设置一下IP地址,一大串的数字还是有点麻烦,于是就想写个批处理文件设置IP 注意:在DOS下设置IP时需要管理员权限运行 1.查看机子设置IP需要用到的名字 ...
- 基于回调的观察者模式
文章目录 回调机制的简单的理解: 比较经典的回调方式: 示例 基于监听的事件处理 回调的简单理解 同步回调 异步回调函数 Java回调机制进阶 回调进阶(基于回调的"观察者"模式的 ...
- Python学习日记--对付爱看电视的女儿
神兽回家了不好对付,刚接触Python也写不出什么复杂的程序,不过对付你个小丫头应该够了. 于是就写了这个个小程序: 想看电视,先闯关吧: 二年级的期末考试,最弱的科目是数学和英语,于是决定每天让她复 ...
- Unity创建超写实三维场景的一般步骤
使用Unity创建三维场景最容易想到的是手动在地形上刷草.刷树等,但是这种方法不仅工作量大,但不真实.最近学习了Gaia插件,发现Gaia用程序自动生成的,感觉这种思想太妙了,World Creato ...
- NOIP2014-7-7模拟赛
1.无线通讯网(wireless.pas/cpp/c) [题目描述] 国防部计划用无线网络连接若干个边防哨所.2种不同的通讯技术用来搭建无线网络:每个边防哨所都要配备无线电收发器:有一些哨所还可以增配 ...
- 一道并查集的(坑)题:关闭农场closing the farm
题目描述 in English: Farmer John and his cows are planning to leave town for a long vacation, and so FJ ...
- 洛谷 P2919 [USACO08NOV]守护农场Guarding the Farm
题目描述 The farm has many hills upon which Farmer John would like to place guards to ensure the safety ...
最新文章
- SAP Spartacus layout设计原理
- 调试某游戏副本中的加亮提示信息思路
- 《大道至简》阅读笔记
- python中的对象_Python中的变量、对象
- C# windows身份验证的连接字符串!
- 涉嫌抄袭!致歉,抖音Semi Design承认参考阿里Ant Design
- 常用电阻阻值表怎么定的?
- 22.Consent 确认逻辑实现
- VB问题——ByRef参数类型不符
- 枚举型、注释(待补充)
- 国内小程序生态服务平台即速应用完成5000万元A+轮融资...
- java实现缩放图像、切割图像、图像类型转换、彩色转黑白、文字水印、图片水印等
- 二、zookeeper客户端使用和集群特性
- 关于 I/O 的五分钟法则
- mysql 数据库里查询语句中不等于的两种写法
- Bugku:简单套娃
- 内网渗透(十三)之内网信息收集-收集域环境中的基本信息
- 精心整理!锐捷交换机配置信息查看十大命令,会用不迷路
- mysql百万数据建索引时间_mysql百万的数据快速创建索引
- PHPcmsV9修改后台登陆界面地址
热门文章
- [leetcode] 935 Knight Dialer 骑士拨号器
- Unity TimeLine学习笔记
- QT3D场景的快速绘制
- 十一则:程序员冷“笑话”据说只有真正的程序员才看得懂
- U盘安装Windows 11正式版绕过TPM检查
- java学习笔记第三周(二)
- 2021-2025年中国服装合同制造的物流行业市场供需与战略研究报告
- puppet自动化部署
- Python爬虫实战 | (21) Scrapy+Selenium爬取新浪滚动新闻
- 【历史上的今天】2 月 28 日:阿帕网退役;Quintus 收购 Mustang;同步电流磁芯存储器获得专利