博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
uva 10535 - Shooter
阅读量:4073 次
发布时间:2019-05-25

本文共 1423 字,大约阅读时间需要 4 分钟。

:

题目大意:

一个人拿着激光枪站在坐标(x,y)处,周围有N个墙,墙的两端点坐标为(x0, y0, x1, y2)。这个人朝着某个方向开枪,激光可以穿过任意数量个墙。求最多一枪能够穿过几个墙?注意,如果激光正好在墙的一端擦边而过,也算穿过。

思路:

看下图,

把人站的坐标看做是坐标的原点,人的正东西向为x轴,南北为y轴,正东向为0度。

然后就可以分别计算每一个墙要朝着多少度范围内射击能射到。这样,问题就抽象成了“给n个闭区间,求某一点覆盖的区间最多”,和   一样的(《训练指南上的例题》)。

实现时要特别注意的一个地方就是,墙跨过了0度的时候,这时候要把墙分开按两个墙算,假如原来是【x, y】,就要变成【0,x】和【y,360】

代码:

#include
#include
#include
#include
#include
using namespace std;const int MAXN = 510;const double PI = acos(-1.0);int n,x, y;struct Event{ double r; int type; bool operator<(const Event&rhs)const{ if(r != rhs.r) return r < rhs.r; return type > rhs.type; }}arr[2*MAXN];struct Line{ int x0,y0,x1,y1;}wall[MAXN];inline double getRadian(int x1, int y1){ // 特殊情况,点在坐标轴上 if(x==x1 && y1>y) return 90; if(x==x1 && y1
x) return 0; double tmp = atan((y1-y)*1.0/(x1-x)); if(tmp < 0) tmp = PI+tmp; // 在第1,2象限 if(y1 > y){ return tmp*180/PI; } // 在第3,4象限 return 180+tmp*180/PI;}int main(){ while(~scanf("%d", &n) && n){ for(int i=0; i
r2) swap(r1, r2); if(r2-r1>=180){ double tmp = r2; r2 = r1; r1 = 0; arr[idx].r = r1; arr[idx++].type = 1; arr[idx].r = r2; arr[idx++].type = -1; r1 = tmp; r2 = 360; } arr[idx].r = r1; arr[idx++].type = 1; arr[idx].r = r2; arr[idx++].type = -1; } sort(arr, arr+idx); int cur=0, maxx=0; for(int i=0; i
0) ++cur, maxx=max(maxx,cur); else --cur; } printf("%d\n", maxx); } return 0;}

转载地址:http://qszni.baihongyu.com/

你可能感兴趣的文章
fhs-framework jetcache 缓存维护之自动清除缓存
查看>>
SpringBoot 动态编译 JAVA class 解决 jar in jar 的依赖问题
查看>>
fhs-framework springboot mybatis 解决表关联查询问题的关键方案-翻译服务
查看>>
ZUUL2 使用场景
查看>>
Spring AOP + Redis + 注解实现redis 分布式锁
查看>>
支付宝生活号服务号 用户信息获取 oauth2 登录对接 springboot java
查看>>
CodeForces #196(Div. 2) 337D Book of Evil (树形dp)
查看>>
uva 12260 - Free Goodies (dp,贪心 | 好题)
查看>>
uva-1427 Parade (单调队列优化dp)
查看>>
【设计模式】学习笔记14:状态模式(State)
查看>>
poj 1976 A Mini Locomotive (dp 二维01背包)
查看>>
斯坦福大学机器学习——因子分析(Factor analysis)
查看>>
项目导入时报错:The import javax.servlet.http.HttpServletRequest cannot be resolved
查看>>
linux对于没有写权限的文件如何保存退出vim
查看>>
Windows下安装ElasticSearch6.3.1以及ElasticSearch6.3.1的Head插件
查看>>
IntelliJ IDEA 下的svn配置及使用的非常详细的图文总结
查看>>
【IntelliJ IDEA】idea导入项目只显示项目中的文件,不显示项目结构
查看>>
ssh 如何方便的切换到其他节点??
查看>>
JSP中文乱码总结
查看>>
Java-IO-File类
查看>>