ZOJ 3379 Master Spark
计算出中轴能覆盖到某个点的极角范围,最大覆盖次数即是答案。
首先把中轴和点重合,此时中轴的角度为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<cstdio>
#include<iostream>
#include<string>
#include<cstring>
#include<queue>
#include<vector>
#include<stack>
#include<map>
#include<set>
#include<algorithm>
#include<cmath>
#include<numeric>
#include<climits>
using namespace std; typedef long double ld;
const int maxn = 3e4+;
double x[maxn], y[maxn]; inline ld sqr(ld x){ return x*x; }
const ld DPI = acosl(-)*; typedef pair<ld,int> ev;
#define fi first
#define se second
vector<ev> evs;
#define pb push_back //#define LOCAL
int main()
{
#ifdef LOCAL
freopen("in.txt","r",stdin);
#endif
//cout<<remainder(-1,2);
int n;
double a;
evs.reserve(maxn*);
while(~scanf("%d%lf",&n,&a)){
int i;
for(i = ; i < n; i++) scanf("%lf",x+i);
for(i = ; i < n; i++) scanf("%lf",y+i);
ld theta, delta, r, be, ed;
evs.clear();
for(i = ; i < n; i++){
theta = atan2l(y[i],x[i]);
r = sqrtl(sqr(x[i])+sqr(y[i]));
delta = acosl( (-+sqrtl(+*sqr(r)*sqr(a)))/(*a*r) );
//if(delta < 0) delta = -delta;
be = remainderl(theta-delta,DPI);
ed = remainderl(theta+delta,DPI);
if(be < ) be += DPI;
if(ed < ) ed += DPI;
evs.pb(ev(be,-));
evs.pb(ev(ed,));
if(ed < be){
evs.pb(ev(,-));
}
}
int ans = , cur = ;
sort(evs.begin(),evs.end());
for(vector<ev> ::iterator it = evs.begin(); it != evs.end(); it++){
cur -= it->se;
//cout<<cur<<endl;
ans = max(ans,cur);
}
printf("%d daze\n", ans);
}
return ;
}
ZOJ 3379 Master Spark的更多相关文章
- Spark技术内幕:Client,Master和Worker 通信源码解析
http://blog.csdn.net/anzhsoft/article/details/30802603 Spark的Cluster Manager可以有几种部署模式: Standlone Mes ...
- Spark:Master High Availability(HA)高可用配置的2种实现
Spark Standalone集群是Master-Slaves架构的集群模式,和大部分的Master-Slaves结构集群一样,存在着Master单点故障的问题.如何解决这个单点故障的问题,Spar ...
- 解决在编程方式下无法访问Spark Master问题
我们可以选择使用spark-shell,spark-submit或者编写代码的方式运行Spark.在产品环境下,利用spark-submit将jar提交到spark,是较为常见的做法.但是在开发期间, ...
- Spark启动时的master参数以及Spark的部署方式
我们在初始化SparkConf时,或者提交Spark任务时,都会有master参数需要设置,如下: conf = SparkConf().setAppName(appName).setMaster(m ...
- 【Spark-core学习之三】 Spark集群搭建 & spark-shell & Master HA
环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk1.8 scala-2.10.4(依赖jdk1.8) spark ...
- 【Spark 深入学习 -09】Spark生态组件及Master节点HA
----本节内容------- 1.Spark背景介绍 2.Spark是什么 3.Spark有什么 4.Spark部署 4.1.Spark部署的2方面 4.2.Spark编译 4.3.Spark St ...
- 提交任务到spark master -- 分布式计算系统spark学习(四)
部署暂时先用默认配置,我们来看看如何提交计算程序到spark上面. 拿官方的Python的测试程序搞一下. qpzhang@qpzhangdeMac-mini:~/project/spark-1.3. ...
- Spark on YARN模式的安装(spark-1.6.1-bin-hadoop2.6.tgz + hadoop-2.6.0.tar.gz)(master、slave1和slave2)(博主推荐)
说白了 Spark on YARN模式的安装,它是非常的简单,只需要下载编译好Spark安装包,在一台带有Hadoop YARN客户端的的机器上运行即可. Spark on YARN简介与运行wor ...
- Spark on YARN简介与运行wordcount(master、slave1和slave2)(博主推荐)
前期博客 Spark on YARN模式的安装(spark-1.6.1-bin-hadoop2.6.tgz +hadoop-2.6.0.tar.gz)(master.slave1和slave2)(博主 ...
随机推荐
- x86的字节对齐与不对齐的问题
比如这么一个结构体struct foo {short s;int n;}; struct foo bar;假设bar的地址是0x12345670如果不按4字节对齐那么bar.n的地址就是0x123 ...
- 2019.03.26 读书笔记 关于for与foreach
for 是索引器,foreach是迭代器 foreach在movenext()中增加了对集合版本(一个整数,每次对集合修改都+1)的验证,另外反编译后的效果是使用了using(是try finally ...
- 全网备份脚本rsync
一,服务端配置 #!/bin/sh ######################################################### #by:kingle # #use: confi ...
- this 显示绑定
function foo (el) { console.log(el, this.id); } var obj = { id: 'aaa' }; [2,6,3].forEach(foo, obj); ...
- Python之装饰器、迭代器和生成器
在学习python的时候,三大“名器”对没有其他语言编程经验的人来说,应该算是一个小难点,本次博客就博主自己对装饰器.迭代器和生成器理解进行解释. 为什么要使用装饰器 什么是装饰器?“装饰”从字面意思 ...
- C#委托的好处
C#委托的好处 先来看一个例子: 某人有三子,让他们各自带一样东西出门,并带回一头猎物. 可以理解为一种父亲对儿子的委托: 猎物 办法(工具 某工具) 三个人执行委托的方法各不相同 兔子 打猎(工具 ...
- 引用SQLHelper类configurationmanager 不存在
在使用Sqlhelper类时,出现cs0103错误 当前上下文中不存在名称configurationmanager 解决方案,除了using引用using System.Configuration外, ...
- 解决:用nvm成功安装nodejs,却无法使用nvm和node命令
问题 一个前端朋友,用Macbook pro成功安装nvm以及node环境,系统查询不到 $ nvm $ -bash: nvm: command not found $ node $ -bash: n ...
- 【Linux】查看磁盘空间大小
Ubuntu 查看磁盘空间大小命令 df -h Df命令是linux系统以磁盘分区为单位查看文件系统,可以加上参数查看磁盘剩余空间信息, 命令格式: df -hl 显示格式为: 文件系统 容量 已 ...
- SpringMvc Controller请求链接忽略大小写(包含拦截器)及@ResponseBody返回String中文乱码处理
SpringMvc Controller请求链接忽略大小写(包含拦截器)及@ResponseBody返回String中文乱码处理... @RequestMapping(value = "/t ...