USACO JAN14 奶牛冰壶运动 凸包+判定
满足条件的一定是在凸包内的,直接判断
恬不知耻的加了特判,2333
- #include<cstdio>
- #include<iostream>
- #include<cstring>
- #include<algorithm>
- #include<cmath>
- #define N 50050
- using namespace std;
- int n,ss[N],top,topa,topb,ans1,ans2;
- bool bo=0;
- struct point{
- double x,y;
- }a[N],b[N],o,p[N];
- double operator * (point a,point b){return a.x*b.y-b.x*a.y;}
- point operator - (point a,point b){return (point){a.x-b.x,a.y-b.y};}
- double dis(point a,point b){return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));}
- bool operator < (point a,point b){
- double s=(a-o)*(b-o);
- if(s==0) return dis(a,o)<dis(b,o);
- return s>0;
- }
- void graham(point *gy){
- ss[++top]=1;
- for(int i=2;i<=n;i++){
- while(top>1&&(gy[i]-gy[ss[top-1]])*(gy[ss[top]]-gy[ss[top-1]])>0) top--;
- ss[++top]=i;
- }
- }
- bool checka(point b){
- int l=1,r=topa,mid;
- while(l<=r){
- mid=(l+r)>>1;
- double a1=(a[ss[mid]]-a[ss[1]])*(b-a[ss[1]]);
- double a2=(a[ss[mid+1]]-a[ss[1]])*(b-a[ss[1]]);
- if(a1>=0&&a2<=0){
- if((a[ss[mid+1]]-a[ss[mid]])*(b-a[ss[mid]])>=0) return 1;
- return 0;
- }
- else{
- if(a1<0) r=mid-1;
- else l=mid+1;
- }
- }
- return 0;
- }
- bool checkb(point a){
- int l=topa+1,r=topb,mid;
- while(l<=r){
- mid=(l+r)>>1;
- double a1=(b[ss[mid]]-b[ss[topa+1]])*(a-b[ss[topa+1]]);
- double a2=(b[ss[mid+1]]-b[ss[topa+1]])*(a-b[ss[topa+1]]);
- if(a1>=0&&a2<=0){
- if((b[ss[mid+1]]-b[ss[mid]])*(a-b[ss[mid]])>=0) return 1;
- return 0;
- }
- else{
- if(a1<0) r=mid-1;
- else l=mid+1;
- }
- }
- return 0;
- }
- int main()
- {
- freopen("curling.in","r",stdin);
- freopen("curling.out","w",stdout);
- scanf("%d",&n);
- int yx=1;
- for(int i=1;i<=n;i++){
- scanf("%lf%lf",&a[i].x,&a[i].y);
- if((a[i].x<a[yx].x)||(a[i].x==a[yx].x&&a[i].y<a[yx].y))yx=i;
- if(a[i].x!=0) bo=1;
- }
- o=a[yx]; swap(a[1],a[yx]);
- sort(a+2,a+n+1);
- //for(int i=1;i<=n;i++)p[i]=a[i];
- graham(a); topa=top;
- yx=1;
- for(int i=1;i<=n;i++){
- scanf("%lf%lf",&b[i].x,&b[i].y);
- if((b[i].x<b[yx].x)||(b[i].x==b[yx].x&&b[i].y<b[yx].y))yx=i;
- if(b[i].x!=0) bo=1;
- }
- if(!bo){
- printf("%d %d\n",n-1,n-1);
- return 0;
- }
- o=b[yx]; swap(b[1],b[yx]);
- sort(b+2,b+n+1);
- graham(b); topb=top;
- for(int i=1;i<=n;i++)
- if(checka(b[i]))
- ans1++;
- for(int i=1;i<=n;i++)
- if(checkb(a[i]))
- ans2++;
- printf("%d %d\n",ans1,ans2);
- return 0;
- }
USACO JAN14 奶牛冰壶运动 凸包+判定的更多相关文章
- 157. [USACO Nov07] 奶牛跨栏
157. [USACO Nov07] 奶牛跨栏(点击转到COGS) 输入文件:hurdles.in 输出文件:hurdles.out 时间限制:1 s 内存限制:128 MB 译 by CmY ...
- ZOJ 3537 Cake(凸包判定+区间DP)
Cake Time Limit: 1 Second Memory Limit: 32768 KB You want to hold a party. Here's a polygon-shaped c ...
- SPFA cojs 176. [USACO Feb07] 奶牛聚会
cojs 176. [USACO Feb07] 奶牛聚会 ★☆ 输入文件:sparty.in 输出文件:sparty.out 简单对比时间限制:3 s 内存限制:16 MB N(1 ≤ ...
- cogs 141. [USACO Jan08] 奶牛的选举
141. [USACO Jan08] 奶牛的选举 ★ 输入文件:elect.in 输出文件:elect.out 简单对比时间限制:1 s 内存限制:16 MB 在推翻了Farmer J ...
- 题解 [USACO Mar08] 奶牛跑步
[USACO Mar08] 奶牛跑步 Description Bessie准备用从牛棚跑到池塘的方法来锻炼. 但是因为她懒,她只准备沿着下坡的路跑到池塘,然后走回牛棚. Bessie也不想跑得太远,所 ...
- cogs157. [USACO Nov07] 奶牛跨栏 x
157. [USACO Nov07] 奶牛跨栏 ★★ 输入文件:hurdles.in 输出文件:hurdles.out 简单对比时间限制:1 s 内存限制:128 MB 译 by Cm ...
- 157. [USACO Nov07] 奶牛跨栏(第三次考试大整理)
157. [USACO Nov07] 奶牛跨栏 输入文件:hurdles.in 输出文件:hurdles.out 简单对比 时间限制:1 s 内存限制:128 MB 译 by CmYkRg ...
- cogs 176. [USACO Feb07] 奶牛聚会 dijkstra
176. [USACO Feb07] 奶牛聚会 ★☆ 输入文件:sparty.in 输出文件:sparty.out 简单对比时间限制:3 s 内存限制:16 MB 译: zqzas N ...
- usaco 地震 && 奶牛观光
Usaco 地震: Description 一场地震把约翰家的牧场摧毁了,坚强的约翰决心重建家园.约翰已经重建了N个牧场, 现在他希望能修建一些道路把它们连接起来.研究地形之后,约翰发现可供修建的道路 ...
随机推荐
- Hibernate与Mybatis的比较
Hibernate与Mybatis的比较: Hibernate: 标准的.重量级.全自动化的ORM框架 可以写sql(SQLQuery,sql )也可以不写sql(Query,hql) ORM映射主要 ...
- maven技术(一)软件安装与配置
maven技术在研发的过程中,作为资源依赖管理非常出色,例如在Java项目开发过程中,需要各种各样jar包,一般情况下开发者会直接将所用到的jar包放在project的lib目录下,提供自己程序调用. ...
- 基础概念:Oracle数据库、实例、用户、表空间、表之间的关系
基础概念:Oracle数据库.实例.用户.表空间.表之间的关系 数据库: Oracle数据库是数据的物理存储.这就包括(数据文件ORA或者DBF.控制文件.联机日志.参数文件).其实Oracle数据库 ...
- Windows ML,系统内置的机器学习平台初探
人工智能现在很火,虽然最近风头隐隐有被区块链盖过,但仍是未来技术转型的首选方向之一.作为AI核心的机器学习,目前也进化到了可以基于平台自动训练模型的地步,例如Azure Machine Learnin ...
- 前端CDN公共库整理
转自: 灰狼博客, 地址: http://itlobo.com/articles/2016.html 现在web应用都在使用js类库,这些类库小的几十K,大的几百K,而国内网络访问速度大家都知道不是那 ...
- linux/unix解压缩
转自:http://blog.sina.com.cn/s/blog_6f2d29af01015ac6.html zip: 压缩: zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][ ...
- Ubuntu 安装LAMP
简要记录一下. 环境准备 虚拟机环境 lz@starnight:~$ sudo -i [sudo] password for lz: root@starnight:~# cat /etc/issue ...
- ScalaPB(2): 在scala中用gRPC实现微服务
gRPC是google开源提供的一个RPC软件框架,它的特点是极大简化了传统RPC的开发流程和代码量,使用户可以免除许多陷阱并聚焦于实际应用逻辑中.作为一种google的最新RPC解决方案,gRPC具 ...
- 浏览器选择最新IE渲染
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
- npoi生成excel流并在客户端下载(html+后台 )
//前端页面 <body> <input type="button" value="导出Excel" class="button&q ...