思路:

  1.枚举两点确定圆心,大于2不用考虑

  2.逐个判断判断距圆心的距离小于1.00001符合题意

这个题,主要在求圆心上废了不少功夫,但是仍存在问题

  1. #include<iostream>
  2. #include<cmath>
  3. #include<vector>
  4. #include<cstdio>
  5. ;
  6. using namespace std;
  7. struct point{
  8. double x,y;
  9. point():x(),y(){};
  10. };
  11. double getDistance(point,point);
  12. point getCentral(point,point);
  13. int main()
  14. {
  15. int t;
  16. cin>>t;
  17. while(t--){
  18. vector<point> vec;
  19. int n;cin>>n;
  20. ;i<n;++i){
  21. point temp;
  22. cin>>temp.x>>temp.y;
  23. vec.push_back(temp);
  24. }
  25. ;//捕鱼数
  26. auto it=vec.begin();
  27. ;i<vec.size()-;++i,++it){
  28. auto iter=it;
  29. for(++iter;iter!=vec.end();++iter){
  30. point cen;//圆心
  31. if(getDistance((*it),(*iter)) >2.0)continue;
  32. cen = getCentral((*it),(*iter));
  33. ;
  34. for(auto p=vec.begin();p!=vec.end();++p){
  35. if(getDistance(cen,(*p)) <= 1.0001)k++;
  36. }
  37. if(cut < k)cut=k;
  38. }
  39. }
  40. cout<<cut<<endl;
  41. }
  42. ;
  43. }
  44. double getDistance(point a,point b){
  45. return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
  46. }
  47. point getCentral(point a,point b){
  48. point o;
  49. point c;//a,b中点
  50. c.x=(a.x+b.x)/;
  51. c.y=(a.y+b.y)/;
  52. double l=getDistance(c,o);//oc长度
  53. );
  54. double len=sqrt(1.0-temp*temp);//圆心到直线AB的距离
  55. point central;
  56. // if(fabs(a.y-b.y)<eps){
  57. // central.x=c.x;
  58. // central.y=c.y+len;
  59. // }
  60. // else {//大牛考虑了两个点几乎重合的情况,按照题意不必考虑
  61. double ang=atan(-(a.x-b.x)/(a.y-b.y));
  62. central.x=c.x+cos(ang)*len;//cos*斜边长
  63. central.y=c.y+sin(ang)*len;//sin*斜边长
  64. /*
  65. 最初自己用临边/斜边的方式模拟正余弦值,但是误差不小,
  66. 甚至两点确定的圆,距离两点的距离大于1
  67. */
  68. /*注意:这个圆心最后是用中点的坐标加上cos*斜边长,但是减去呢?明显不对了虽然A了,但枚举不是正确的方法*/
  69. // }
  70. return central;
  71. }

hdu--1077--Catching Fish的更多相关文章

  1. HDU 1077 Catching Fish(用单位圆尽可能围住多的点)

    传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1077 Catching Fish Time Limit: 10000/5000 MS (Java/Oth ...

  2. (水题)HDU - 1077 - Catching Fish - 计算几何

    http://acm.hdu.edu.cn/showproblem.php?pid=1077 很明显这样的圆,必定有两个点在边界上.n平方枚举圆,再n立方暴力判断.由于没有给T,所以不知道行不行.

  3. hduoj 1077 Catching Fish 求单位圆最多覆盖点个数

    Catching Fish Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)To ...

  4. Catching Fish[HDU1077]

    Catching Fish Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)To ...

  5. hdu 1077(单位圆覆盖问题)

    Catching Fish Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)To ...

  6. HDU 3395 Special Fish(拆点+最大费用最大流)

    Special Fish Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tot ...

  7. [ACM] HDU 3395 Special Fish (最大重量二分图匹配,KM算法)

    Special Fish Problem Description There is a kind of special fish in the East Lake where is closed to ...

  8. HDU 3469 Catching the Thief (博弈 + DP递推)

    Catching the Thief Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  9. hdu 1077 (圆交)

    Problem - 1077 我们可以知道,当这个单位圆可以覆盖到最多的点的时候,必定最少有两个点位于这个圆的圆周上,于是就有网上众多的O(N^3)的枚举两个在圆上的点的暴搜做法. 然而这题是可以用圆 ...

  10. HDU 1077

    题意 : 给你 N 个点, 问一个单位圆最大能包括几个点 直接暴力枚举圆心, 计算个数        O(n^ 3): 精度,细节都要注意, //#include<bit/stdc++.h> ...

随机推荐

  1. angular.js小知识总结

    angular-watch.html 代码如下: <script> var app = angular.module('app',[]); app.controller('ctrl',fu ...

  2. Chapter 3. Video Coding Concepts

    本章主要介绍一些有关视频编码的概念 时域模型(Temporal Model) 时域模型的作用是去除帧间冗余.如:将第二帧减去第一帧,得到的剩余信息,其能量会远小于第二帧本身. 基于块的运动估计和补偿 ...

  3. 2017寒假零基础学习Python系列之函数之 定义默认参数

    在定义函数时,可以有默认参数例如Python自带的函数int(),其实就是两个参数,我们既可以传一个参数,又可以传两个参数 int(') >>>123 int(',8) 83 int ...

  4. Tomcat学习笔记(一)一个简单的Web服务器

    内容为<深入剖析Tomcat>第一章重点,以及自己的总结,如有描述不清的,可查看原书. 一.HTTP协议: 1.定义:用于服务器与客户端的通讯的协议,允许web服务器和浏览器通过互联网进行 ...

  5. 百度云bcc建站

    一.购买百度云服务 1.百度云bcc购买网页http://bce.baidu.com/product/bcc.html 2.买完后管理:http://console.bce.baidu.com/bcc ...

  6. A start job is running for xxx to stop

    CentOS7开机时,遇到这样的问题已经好多回了,查阅了许多这样的问题,总是没能找到自己想要的答案. 今天本来启动顺利,但是设置mysql.httpd服务开机启动之后,再次开机时又遇到这样的问题. 这 ...

  7. virtualbox 安装centos系统,设置双网卡实现虚拟机上网及主宿互访

    写在前面:前两天想玩linux,在VMware中装了centos,进入系统后发现连不上网,搜了下教程,/etc/sysconfig/network-scripts/目录下没有 ifcfg-e*的文件 ...

  8. Luogu 1090 合并果子(贪心,优先队列,STL运用)

    Luogu 1090 合并果子(贪心,优先队列,STL运用) Description 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.多多决定把所有的果子合成一堆. 每 ...

  9. php与MySQL(基本操作)

    PHP连接 MySQL 在我们访问 MySQL 数据库前,我们需要先连接到数据库服务器,连接服务器,我们使用mysqli_connect()函数. 在使用这个函数之前,我们首先来看一下这个函数的语法: ...

  10. ES6速记手册

    1.三元操作符 这是一个很好的节省代码当你想要编写一个如果. . else语句在一线. 普通写法: const x = 20;let big;if (x > 10) { 速记: const bi ...