博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ZOJ 3379 Master Spark
阅读量:5962 次
发布时间:2019-06-19

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

计算出中轴能覆盖到某个点的极角范围,最大覆盖次数即是答案。

首先把中轴和点重合,此时中轴的角度为theta = atan(y/x),

然后以原点为圆心旋转点和抛物线相交求出之间的夹角,

把x = a*y*y 化成极坐标下r cosθ = a *r *r (1 -  cos2θ) ,解方程得到

极角范围应该为[theta-θ, theta+θ]。

有了极角范围,排序以后扫描线。

写的时候须小心的坑点:

1.theta-θ的范围可能超过[0, 2*pi],需要取余。

2.取余以后有可能有end < begin的情况,需要在最左端手动添加事件点。

3.端点是都可以包括的,当极角相同时,入点事件优先于出点事件。

/**********************************************************            ------------------                          **   author AbyssFish                                     ***********************************************************/#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;typedef long double ld;const int maxn = 3e4+1;double x[maxn], y[maxn];inline ld sqr(ld x){ return x*x; }const ld DPI = acosl(-1)*2;typedef pair
ev;#define fi first#define se secondvector
evs;#define pb push_back//#define LOCALint main(){#ifdef LOCAL freopen("in.txt","r",stdin);#endif //cout<
::iterator it = evs.begin(); it != evs.end(); it++){ cur -= it->se; //cout<
<

 

转载于:https://www.cnblogs.com/jerryRey/p/5041139.html

你可能感兴趣的文章
Android 动态注册 亮屏、息屏广播
查看>>
NYOJ 题目77 开灯问题(简单模拟)
查看>>
15.6. HTML嵌入图片
查看>>
Could not find class &#39;XXX.activity‘&#39;, referenced from method &#39;YYYY&#39;
查看>>
I.MX6Q MfgTool2 ucl2.xml eMMC
查看>>
[家里蹲大学数学杂志]第425期一个定积分的计算
查看>>
ASP.NET Web API 应用教程(一) ——数据流使用
查看>>
Python系列干货之Python与设计模式!
查看>>
C# iTextSharp 生成 PDF
查看>>
【中亦安图】Systemstate Dump分析经典案例(8)
查看>>
Template Method(模板方法)模式
查看>>
Dynamic proxy (good-原创)
查看>>
【Redis】Java之Redis工具类
查看>>
算法系列15天速成——第十一天 树操作(上)
查看>>
MySQL中游标使用以及读取文本数据
查看>>
Kubernetes部署的最佳安全实践
查看>>
理解C语言——从小菜到大神的晋级之路(8)——数组、指针和字符串
查看>>
Windows Shellcode学习笔记——shellcode在栈溢出中的利用与优化
查看>>
关于多线程中使用SendMessage
查看>>
【云栖大会】阿里云移动云Apsara Mobile重磅发布 推出Cloud Native App全新研发范式...
查看>>