BZOJ2732: [HNOI2012]射箭

列出不等式,二分,半平面交判定。注意可行域可能为点或线段或无界区域。坐标范围略大,算出来a的范围约为-1e9~-1e-18(a<0),理论上要用long double,不过好像double也能过。

#include<algorithm>
#include<cstdio>
#include<cmath>
using std::sort;
typedef long double flo;
const flo eps=1e-24;
const int N=2e5+5;
int m;
struct vec{flo x,y;};
flo det(vec a,vec b){return a.x*b.y-a.y*b.x;}
vec operator+(vec a,vec b){return(vec){a.x+b.x,a.y+b.y};}
vec operator-(vec a,vec b){return(vec){a.x-b.x,a.y-b.y};}
vec operator*(flo a,vec b){return(vec){a*b.x,a*b.y};}
struct line{int i;vec p,v;flo a;void cal(){a=atan2(v.y,v.x);}
}c[N],q[N];
flo cal(vec a,line b){return det(a-b.p,b.v);}
bool operator<(line a,line b){return a.a<b.a||a.a==b.a&&cal(a.p,b)<0;
}
vec over(line a,line b){return a.p+det(a.p-b.p,b.v)/det(b.v,a.v)*a.v;
}
bool jud(int s){int a=0,b=-1;for(int i=0;i<m;++i)if(c[i].i<=s)if(a>b||fabs(c[i].a-q[b].a)>eps){while(a<b&&cal(over(q[b],q[b-1]),c[i])>0)--b;while(a<b&&cal(over(q[a],q[a+1]),c[i])>0)++a;q[++b]=c[i];}while(a<b&&cal(over(q[b],q[b-1]),q[a])>0)--b;return b-a>1;
}
int main(){struct{operator int(){int x=0,c=getchar();while(c<48)c=getchar();while(c>47)x=x*10+c-48,c=getchar();return x;}}it;c[m++]=(line){0,-1e9,0,0,-1};c[m++]=(line){0,-1e-18,0,0,1};int n=it;for(int i=1;i<=n;++i){flo x=it,y1=it,y2=it;c[m++]=(line){i,0,y1/x,1,-x};c[m++]=(line){i,0,y2/x,-1,x};}for(int i=0;i<m;++i)c[i].cal();sort(c,c+m);int l=1,r=n;while(l!=r){int j=l+r+1>>1;jud(j)?l=j:r=j-1;}printf("%d\n",l);
}

转载于:https://www.cnblogs.com/f321dd/p/5538318.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/490633.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MATLAB画频率响应曲线(幅频特性和相频特性)并将横坐标转换为赫兹hz单位

matlab画频率响应曲线的函数为&#xff1a; [h,w] freqz(b,a,n) b,a&#xff1a;传递函数系数 h&#xff1a;频率响应 w&#xff1a;角频率&#xff0c;0~π 更多参数解释参考官方链接https://ww2.mathworks.cn/help/signal/ref/freqz.html?requesteddomaintrue 用freqz…

python3.6配置环境变量_python安裝及环境变量配置

一、安装 1.python下载 进入官网后选择download&#xff0c;选择windows进入如下页面1.1 python3.6.6版本下载 首先我们下载python3.6.6版本&#xff0c;下滑页面找到此位置&#xff0c;64位系统选择红色框框&#xff0c;32位选择蓝色框框点击进行下载 1.2 python2.7版本下载 下…

sqlserver binary varbinary image 的区别

binary固定长度的二进制数据&#xff0c;其最大长度为 8,000 个字节。varbinary可变长度的二进制数据&#xff0c;其最大长度为 8,000 个字节。image可变长度的二进制数据&#xff0c;其最大长度为 2^31 - 1 (2,147,483,647) 个字节转载于:https://www.cnblogs.com/lvdongjie/p…

人与动物之间有没有一条不可逾越的鸿沟?——从基础存在论到生命哲学

来源&#xff1a;《哲学动态》 2018年第12期作者&#xff1a;舒红跃&#xff08;湖北大学哲学学院&#xff09;张哲&#xff08;湖北省道德与文明研究中心&#xff09;海德格尔《存在与时间》中对“此在”的生存论刻画是哲学史中的经典&#xff0c;此在“在-世界中-存在”是存在…

matlab显示曲线图中某个点的坐标值

在画好一幅曲线图后&#xff0c;有时候我们需要找出某个坐标的点&#xff0c;可以通过打开数据游标功能&#xff0c;此时鼠标点击的位置就会显示出坐标值&#xff0c;如下图&#xff1a; 此时保存下来的图也会带有显示的坐标值。 如果需要显示多个坐标的值&#xff0c;按住alt…

python保留字的是_Python保留字

下面的列表显示了在Python中的保留字。这些保留字不能用作常数或变数&#xff0c;或任何其他标识符名称。 所有 Python 的关键字只包含小写字母。 1、and and 用于表达式运算&#xff0c;逻辑与操作 2、as as用于类型转换 3、assert assert断言&#xff0c;用于判断变量或条件表…

数字滤波器的差分方程和传递函数

差分方程用于描述线性、时不变、因果滤波器 数字滤波器的差分方程表示为&#xff1a; 对应的系统函数/传递函数为&#xff1a; a_k&#xff0c;b_k为滤波器系数 当a_k0时&#xff0c;滤波器当前的输出仅依赖于输入&#xff0c;而不依赖过去的输出&#xff0c;称为非递归滤波器…

javascript中浅拷贝和深拷贝的理解

javascript中浅拷贝和深拷贝的理解 什么是拷贝&#xff1f; 简单地说就是复制&#xff0c;对数据的复制 浅拷贝&#xff1a;改变拷贝者的值&#xff0c;被拷贝者的值也会变化 深拷贝&#xff1a;改变拷贝者的值&#xff0c;被拷贝者的值不会变化 由于基本数据类型是存放在栈中&…

2019年AI实力对决:美国领跑,中国追赶,欧盟弱势

来源&#xff1a; 智东西&#xff0c;Data Innovation美国当地时间8月18日&#xff0c;美国数据创新中心&#xff08;Center for Data Innovation&#xff09;发布针对中国、美国和欧洲三大地区的人工智能发展报告&#xff0c;报告显示&#xff0c;目前美国在AI发展中仍然保持领…

谷歌学术搜索技巧:查找一个句子的某个空应该用什么词

在写论文的时候经常遇到某个地方不知道应该用什么词比较专业的问题&#xff0c;举个例子&#xff1a; we used training strategy * in literature [10] *号处应该填什么词比较专业呢 这时可以在谷歌学术找到答案 在谷歌学术搜索中输入&#xff1a; "training strate…

python中str和input_python中eval()函数和input()函数用法解析

今天给大家讲解Python中eval()函数和input()函数的用法&#xff0c;希望通过实例的讲解之后大家能对这两个函数有更加深刻的理解。 1.eval()函数 eval(<字符串>)能够以Python表达式的方式解析并执行字符串&#xff0c;并将返回结果输出。eval()函数将去掉字符串的两个引号…

VIM操作技巧

使用vim有一段时间了&#xff0c;现在记录部分操作技巧&#xff1a; 1.查找当前光标所在的单词&#xff0c;都出现在什么位置 匹配当前光标所在的单词&#xff0c;#&#xff08;上一个&#xff09;或*&#xff08;下一个&#xff09;键 2.复制当前单词 ye可复制当前的单词&…

关于未来的蝴蝶效应,《崛起的超级智能》创作有感

来源&#xff1a;刘锋科学网博客前言&#xff1a;2019年7月5日&#xff0c;当我拿到出版社寄出的《崛起的超级智能&#xff1a;互联网大脑如何影响科技未来》时&#xff0c;仿佛在捧着一个刚出生的婴儿。不是十月怀胎&#xff0c;而是历经12年的孕育&#xff0c;2年多的艰苦生产…

python函数库_10. 标准库简介

10.标准库简介 10.1.操作系统接口 os 模块提供了许多与操作系统交互的函数: >>>import os >>>os.getcwd() # Return the current working directory C:\\Python39 >>>os.chdir(/server/accesslogs) # Change current working directory >>>…

LaTeX表格字太贴近上面表线

如图所示&#xff0c;默认情况下有时候会出现表格中的字太贴近上面表线的问题&#xff1a; 解决方法&#xff1a;在\begin{tabular}{c|cc|cc|cc}命令前面加一句\renewcommand{\arraystretch}{1.5} 效果如图&#xff1a; \renewcommand{\arraystretch}{number}命令可以调整表线和…

造出世界最大芯片的公司,Cerebras Systems到底是怎样的存在?

来源&#xff1a;TechSugar最近&#xff0c;一颗巨型芯片的诞生引爆了芯片圈。其面积42225 平方毫米&#xff0c;拥有1.2 万亿个晶体管&#xff0c;400000 个核心&#xff0c;片上内存18G字节&#xff0c;内存带宽19PByte/s&#xff0c;fabric带宽100Pbit/s。是目前芯片面积最大…

java乱码问题总结

在基于Java的编程中&#xff0c;经常会碰到汉字的处里及显示的问题&#xff0c;比如一大堆乱码或问号。 这是因为JAVA中默认的编码方式是UNICODE&#xff0c;而中国人通常使用的文件和DB都是基于GB2312或者BIG5等编码&#xff0c;故会出现此问题。以前我一般都是保证当前页与目…

matplotlib设置colorbar字体大小

只需在前面加一句 plt.rcParams[font.size] 13

python函数type的用意_python中type()是什么意思

type()是一个内建的获取变量类型的函数。 type()函数有两个用法&#xff0c;当只有一个参数的时候&#xff0c;返回对象的类型。当有三个参数的时候返回一个类对象。 语法&#xff1a;type(object) type(name, bases, dict) 具体用法&#xff1a; 一个参数type(object) 返回一个…

西方哲学史中49位哲学家的核心思想

来源&#xff1a;哲学与艺术泰勒斯——水是万物的始基这一命题开创了人类认识的一个新时代&#xff0c;拉开了从哲学的角度审视世界的大幕。阿那克西曼德——世界源于无定阿那克西曼德生于米利都&#xff0c;是泰勒斯的追随者和最出色的学生。阿那克西米尼——世界源于无限的空…