满足条件的一定是在凸包内的,直接判断

恬不知耻的加了特判,2333

  1. #include<cstdio>
  2. #include<iostream>
  3. #include<cstring>
  4. #include<algorithm>
  5. #include<cmath>
  6. #define N 50050
  7. using namespace std;
  8. int n,ss[N],top,topa,topb,ans1,ans2;
  9. bool bo=0;
  10. struct point{
  11. double x,y;
  12. }a[N],b[N],o,p[N];
  13. double operator * (point a,point b){return a.x*b.y-b.x*a.y;}
  14. point operator - (point a,point b){return (point){a.x-b.x,a.y-b.y};}
  15. double dis(point a,point b){return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));}
  16. bool operator < (point a,point b){
  17. double s=(a-o)*(b-o);
  18. if(s==0) return dis(a,o)<dis(b,o);
  19. return s>0;
  20. }
  21. void graham(point *gy){
  22. ss[++top]=1;
  23. for(int i=2;i<=n;i++){
  24. while(top>1&&(gy[i]-gy[ss[top-1]])*(gy[ss[top]]-gy[ss[top-1]])>0) top--;
  25. ss[++top]=i;
  26. }
  27. }
  28. bool checka(point b){
  29. int l=1,r=topa,mid;
  30. while(l<=r){
  31. mid=(l+r)>>1;
  32. double a1=(a[ss[mid]]-a[ss[1]])*(b-a[ss[1]]);
  33. double a2=(a[ss[mid+1]]-a[ss[1]])*(b-a[ss[1]]);
  34. if(a1>=0&&a2<=0){
  35. if((a[ss[mid+1]]-a[ss[mid]])*(b-a[ss[mid]])>=0) return 1;
  36. return 0;
  37. }
  38. else{
  39. if(a1<0) r=mid-1;
  40. else l=mid+1;
  41. }
  42. }
  43. return 0;
  44. }
  45. bool checkb(point a){
  46. int l=topa+1,r=topb,mid;
  47. while(l<=r){
  48. mid=(l+r)>>1;
  49. double a1=(b[ss[mid]]-b[ss[topa+1]])*(a-b[ss[topa+1]]);
  50. double a2=(b[ss[mid+1]]-b[ss[topa+1]])*(a-b[ss[topa+1]]);
  51. if(a1>=0&&a2<=0){
  52. if((b[ss[mid+1]]-b[ss[mid]])*(a-b[ss[mid]])>=0) return 1;
  53. return 0;
  54. }
  55. else{
  56. if(a1<0) r=mid-1;
  57. else l=mid+1;
  58. }
  59. }
  60. return 0;
  61. }
  62. int main()
  63. {
  64. freopen("curling.in","r",stdin);
  65. freopen("curling.out","w",stdout);
  66. scanf("%d",&n);
  67. int yx=1;
  68. for(int i=1;i<=n;i++){
  69. scanf("%lf%lf",&a[i].x,&a[i].y);
  70. if((a[i].x<a[yx].x)||(a[i].x==a[yx].x&&a[i].y<a[yx].y))yx=i;
  71. if(a[i].x!=0) bo=1;
  72. }
  73. o=a[yx]; swap(a[1],a[yx]);
  74. sort(a+2,a+n+1);
  75. //for(int i=1;i<=n;i++)p[i]=a[i];
  76. graham(a); topa=top;
  77. yx=1;
  78. for(int i=1;i<=n;i++){
  79. scanf("%lf%lf",&b[i].x,&b[i].y);
  80. if((b[i].x<b[yx].x)||(b[i].x==b[yx].x&&b[i].y<b[yx].y))yx=i;
  81. if(b[i].x!=0) bo=1;
  82. }
  83. if(!bo){
  84. printf("%d %d\n",n-1,n-1);
  85. return 0;
  86. }
  87. o=b[yx]; swap(b[1],b[yx]);
  88. sort(b+2,b+n+1);
  89. graham(b); topb=top;
  90. for(int i=1;i<=n;i++)
  91. if(checka(b[i]))
  92. ans1++;
  93. for(int i=1;i<=n;i++)
  94. if(checkb(a[i]))
  95. ans2++;
  96. printf("%d %d\n",ans1,ans2);
  97. return 0;
  98. }

USACO JAN14 奶牛冰壶运动 凸包+判定的更多相关文章

  1. 157. [USACO Nov07] 奶牛跨栏

    157. [USACO Nov07] 奶牛跨栏(点击转到COGS) 输入文件:hurdles.in   输出文件:hurdles.out 时间限制:1 s   内存限制:128 MB 译 by CmY ...

  2. 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 ...

  3. SPFA cojs 176. [USACO Feb07] 奶牛聚会

    cojs 176. [USACO Feb07] 奶牛聚会 ★☆   输入文件:sparty.in   输出文件:sparty.out   简单对比时间限制:3 s   内存限制:16 MB N(1 ≤ ...

  4. cogs 141. [USACO Jan08] 奶牛的选举

    141. [USACO Jan08] 奶牛的选举 ★   输入文件:elect.in   输出文件:elect.out   简单对比时间限制:1 s   内存限制:16 MB 在推翻了Farmer J ...

  5. 题解 [USACO Mar08] 奶牛跑步

    [USACO Mar08] 奶牛跑步 Description Bessie准备用从牛棚跑到池塘的方法来锻炼. 但是因为她懒,她只准备沿着下坡的路跑到池塘,然后走回牛棚. Bessie也不想跑得太远,所 ...

  6. cogs157. [USACO Nov07] 奶牛跨栏 x

    157. [USACO Nov07] 奶牛跨栏 ★★   输入文件:hurdles.in   输出文件:hurdles.out   简单对比时间限制:1 s   内存限制:128 MB 译 by Cm ...

  7. 157. [USACO Nov07] 奶牛跨栏(第三次考试大整理)

    157. [USACO Nov07] 奶牛跨栏 输入文件:hurdles.in   输出文件:hurdles.out   简单对比 时间限制:1 s   内存限制:128 MB 译 by CmYkRg ...

  8. cogs 176. [USACO Feb07] 奶牛聚会 dijkstra

    176. [USACO Feb07] 奶牛聚会 ★☆   输入文件:sparty.in   输出文件:sparty.out   简单对比时间限制:3 s   内存限制:16 MB 译: zqzas N ...

  9. usaco 地震 && 奶牛观光

    Usaco 地震: Description 一场地震把约翰家的牧场摧毁了,坚强的约翰决心重建家园.约翰已经重建了N个牧场, 现在他希望能修建一些道路把它们连接起来.研究地形之后,约翰发现可供修建的道路 ...

随机推荐

  1. Hibernate与Mybatis的比较

    Hibernate与Mybatis的比较: Hibernate: 标准的.重量级.全自动化的ORM框架 可以写sql(SQLQuery,sql )也可以不写sql(Query,hql) ORM映射主要 ...

  2. maven技术(一)软件安装与配置

    maven技术在研发的过程中,作为资源依赖管理非常出色,例如在Java项目开发过程中,需要各种各样jar包,一般情况下开发者会直接将所用到的jar包放在project的lib目录下,提供自己程序调用. ...

  3. 基础概念:Oracle数据库、实例、用户、表空间、表之间的关系

    基础概念:Oracle数据库.实例.用户.表空间.表之间的关系 数据库: Oracle数据库是数据的物理存储.这就包括(数据文件ORA或者DBF.控制文件.联机日志.参数文件).其实Oracle数据库 ...

  4. Windows ML,系统内置的机器学习平台初探

    人工智能现在很火,虽然最近风头隐隐有被区块链盖过,但仍是未来技术转型的首选方向之一.作为AI核心的机器学习,目前也进化到了可以基于平台自动训练模型的地步,例如Azure Machine Learnin ...

  5. 前端CDN公共库整理

    转自: 灰狼博客, 地址: http://itlobo.com/articles/2016.html 现在web应用都在使用js类库,这些类库小的几十K,大的几百K,而国内网络访问速度大家都知道不是那 ...

  6. linux/unix解压缩

    转自:http://blog.sina.com.cn/s/blog_6f2d29af01015ac6.html zip: 压缩: zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][ ...

  7. Ubuntu 安装LAMP

    简要记录一下. 环境准备 虚拟机环境 lz@starnight:~$ sudo -i [sudo] password for lz: root@starnight:~# cat /etc/issue ...

  8. ScalaPB(2): 在scala中用gRPC实现微服务

    gRPC是google开源提供的一个RPC软件框架,它的特点是极大简化了传统RPC的开发流程和代码量,使用户可以免除许多陷阱并聚焦于实际应用逻辑中.作为一种google的最新RPC解决方案,gRPC具 ...

  9. 浏览器选择最新IE渲染

    <meta http-equiv="X-UA-Compatible" content="IE=edge" />

  10. npoi生成excel流并在客户端下载(html+后台 )

    //前端页面 <body> <input type="button" value="导出Excel" class="button&q ...