uvalive3905Meteor

简介: 题意:给你一个矩形照相机,还有n个流星的初始位置和速度,求能找到流星最多的时刻,注意,在相机边界上的点不会被照到。 分析:相机的边界是固定的,只需要判断每一颗流星是否在照相机的区域内出现过,如果出现过,记录其出现的时间区间[ai,bi],那么问题转化为求一个时间t使得此时有最多的区间经过这个点...

题意:给你一个矩形照相机,还有n个流星的初始位置和速度,求能找到流星最多的时刻,注意,在相机边界上的点不会被照到。

\epsfbox{p3905.eps}

分析:相机的边界是固定的,只需要判断每一颗流星是否在照相机的区域内出现过,如果出现过,记录其出现的时间区间[ai,bi],那么问题转化为求一个时间t使得此时有最多的区间经过这个点,类似于“扫描线”

View Code
 1 #include <stdio.h>
 2 #include <algorithm>
 3 using namespace std;
 4 #define DEBUG
 5 double max(double a, double b){
 6     return a>b?a:b;
 7 }
 8 double min(double a, double b){
 9     return a<b?a:b;
10 }
11 int max(int a, int b){
12     return a>b?a:b;
13 }
14 void update(int x, int a, int w, double& L, double& R){
15     if(a==0){
16         if(x<=0||x>=w) R=L-1;
17     }else if(a>0){
18         L = max(L, -x*1.0/a);
19         R = min(R, (w-x)*1.0/a);
20     }else{
21         L = max(L, (w-x)*1.0/a);
22         R = min(R, -x*1.0/a);
23     }
24 }
25 
26 const int MAXN = 100000 + 10;
27 
28 struct ZZ{
29     double x;
30     int type;        //0表示←,1表示→
31     bool operator < (const ZZ&z) const{
32         return x<z.x || (x==z.x && type>z.type);
33     }
34 };
35 ZZ zz[MAXN*2];
36 
37 int main(){
38 #ifndef DEBUG
39     freopen("in.txt", "r", stdin);
40 #endif
41     int cas;
42     scanf("%d", &cas);
43     while(cas--){
44         int w, h, n, e=0;
45         scanf("%d%d%d", &w, &h, &n);
46         int i;
47         for(i=0; i<n; i++){
48             int a, b, x, y;
49             scanf("%d%d%d%d", &x, &y, &a, &b);
50             double L = 0, R = 1e9;
51             update(x, a, w, L, R);
52             update(y, b, h, L, R);
53             if(R>L){
54                 ZZ tz;
55                 tz.x = L;
56                 tz.type = 0;
57                 zz[e++] = tz;
58                 tz.x = R;
59                 tz.type = 1;
60                 zz[e++] = tz;
61             }
62         }
63         sort(zz, zz+e);
64         int cnt=0, ans=0;
65         for(i=0; i<e; i++){
66             if(zz[i].type==0) ans=max(ans, ++cnt);
67             else cnt--;
68         }
69         printf("%d\n", ans);
70     }
71     return 0;
72 }

update()中当a>0时L=max(L, -x*1.0/a)包括了x取正和取负两种情况

目录
相关文章
|
JavaScript
Element el-radio 单选框详解
本文目录 1. 用途 2. 单选框 3. 单选框样式 4. 单选框组 4. 单选框组样式 5. 尺寸调节 6. 绑定值变化事件 7. 小结
1956 0
Element el-radio 单选框详解
|
6月前
|
前端开发 API 开发者
一键抠图有多强?19Kstar 的 Rembg 开源神器,5 大实用场景颠覆想象!
Rembg是一款基于Python的开源抠图工具,利用深度学习模型(U-Net/U-2-Net)实现高质量背景移除。它支持命令行、Python API、服务端API及插件等多种形式,适用于电商商品图、社交头像优化、设计项目图像等场景。凭借高精准度、即插即用特性和全面生态,Rembg在GitHub上已获19.1K星,成为开发者社区中的热门工具。其本地部署特性确保数据隐私,适合专业与商业环境使用。项目地址:https://github.com/danielgatis/rembg。
1486 24
|
11月前
|
机器学习/深度学习 人工智能 自然语言处理
DeepSeek Artifacts:在线实时预览的前端 AI 编程工具,基于DeepSeek V3快速生成React App
DeepSeek Artifacts是Hugging Face推出的免费AI编程工具,基于DeepSeek V3,支持快速生成React和Tailwind CSS代码,适合快速原型开发和前端组件构建。
2301 39
DeepSeek Artifacts:在线实时预览的前端 AI 编程工具,基于DeepSeek V3快速生成React App
|
机器学习/深度学习 人工智能 算法
|
存储 自然语言处理 架构师
聚力同行,阿里云与合作伙伴这一年
2023年,通过落实“坚持伙伴优先”的生态战略,阿里云与遍布中国133个地级市的12000家伙伴一起,服务了超50万家客户。
|
数据可视化 网络安全 Windows
下载安装MobaXterm并链接服务器的操作方法
【2月更文挑战第13天】本文介绍在Windows电脑中,下载、配置MobaXterm软件,从而连接、操作远程服务器的方法~
1347 2
下载安装MobaXterm并链接服务器的操作方法
|
监控 安全 网络安全
CWPP与EDR的定义与区别
随着信息系统的发展,大家都在说网络安全要覆盖“云”、“管”、“端”,CWPP与EDR是目前非常火的产品,一个面向云端服务器的防护,一个是面向常规终端PC端的防护。
3273 0
|
缓存 NoSQL Java
【小家Spring】Spring Boot中使用RedisTemplate优雅的操作Redis,并且解决RedisTemplate泛型注入失败的问题(下)
【小家Spring】Spring Boot中使用RedisTemplate优雅的操作Redis,并且解决RedisTemplate泛型注入失败的问题(下)
【小家Spring】Spring Boot中使用RedisTemplate优雅的操作Redis,并且解决RedisTemplate泛型注入失败的问题(下)
|
分布式数据库 Hbase 关系型数据库
hbase 学习(十三)集群间备份原理
 集群建备份,它是master/slaves结构式的备份,由master推送,这样更容易跟踪现在备份到哪里了,况且region server是都有自己的WAL 和HLog日志,它就像mysql的主从备份结构一样,只有一个日志来跟踪。一个master集群可以向多个slave集群推送,收到推送的集群会覆
2282 0
|
1天前
|
云安全 人工智能 自然语言处理

热门文章

最新文章