思路:

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

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

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

#include<iostream>
#include<cmath>
#include<vector>
#include<cstdio>
;
using namespace std;
struct point{
    double x,y;
    point():x(),y(){};
};
double getDistance(point,point);
point getCentral(point,point);
int main()
{
    int t;
    cin>>t;
    while(t--){
        vector<point> vec;
        int n;cin>>n;
        ;i<n;++i){
            point temp;
            cin>>temp.x>>temp.y;
            vec.push_back(temp);
        }
        ;//捕鱼数
        auto it=vec.begin();
        ;i<vec.size()-;++i,++it){
            auto iter=it;
            for(++iter;iter!=vec.end();++iter){
                point cen;//圆心
                if(getDistance((*it),(*iter)) >2.0)continue;
                cen = getCentral((*it),(*iter));
                ;
                for(auto p=vec.begin();p!=vec.end();++p){
                    if(getDistance(cen,(*p)) <= 1.0001)k++;
                }
                if(cut < k)cut=k;
            }
        }
        cout<<cut<<endl;
    }
    ;
}
double getDistance(point a,point b){
    return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
}
point getCentral(point a,point b){
    point o;
    point c;//a,b中点
    c.x=(a.x+b.x)/;
    c.y=(a.y+b.y)/;
    double l=getDistance(c,o);//oc长度
    );
    double len=sqrt(1.0-temp*temp);//圆心到直线AB的距离
    point central;
//    if(fabs(a.y-b.y)<eps){
//        central.x=c.x;
//        central.y=c.y+len;
//    }
//    else {//大牛考虑了两个点几乎重合的情况,按照题意不必考虑
        double ang=atan(-(a.x-b.x)/(a.y-b.y));
        central.x=c.x+cos(ang)*len;//cos*斜边长
        central.y=c.y+sin(ang)*len;//sin*斜边长
        /*
        最初自己用临边/斜边的方式模拟正余弦值,但是误差不小,
        甚至两点确定的圆,距离两点的距离大于1
        */
/*注意:这个圆心最后是用中点的坐标加上cos*斜边长,但是减去呢?明显不对了虽然A了,但枚举不是正确的方法*/
//     }
    return central;
}

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. java——国际化详解

    深入理解Java国际化 假设我们正在开发一个支持多国语言的Web应用程序,要求系统能够根据客户端的系统的语言类型返回对应的界面:英文的操作系统返回英文界面,而中文的操作系统则返回中文界面--这便是典型 ...

  2. 发布.NET MVC网站 到Azure

    最近的项目部署在Microsoft Azure,学习了一些新东西,记录下. 1.账号. 用于登录portal(https://portal.azure.cn/),账号下有对应的Subscription ...

  3. Spring Boot 集成 Mybatis

    原文:https://github.com/x113773/testall/issues/9 方式一:mybatis-spring-boot-starter---这种方式比较简单,具体步骤如下:1. ...

  4. struts2框架下的一个简单的ajax例子

    举个例子 jsp页面: <%@ page language="java" import="java.util.*" pageEncoding=" ...

  5. java生成首字母拼音简码的总结

    百度找到了某论坛高人写的java(具体论坛记不清了),直接用来调用,再次非常感谢,基本上实现了我的需求 package MD5;import java.util.Scanner;public clas ...

  6. js实现两个输入框中的数字相乘并自动将结果显示在第三个输入框

    <script type="text/javascript"> function cal(ida,idb,idc) { var numa=Number(document ...

  7. python编程快速上手之第6章实践项目参考答案

    #!/usr/bin/env python3.5 2 #coding:utf-8 3 # 4 # 这个项目主要目的是字符串的处理,简单格式化输出 5 tableData = [['apples','o ...

  8. [基础架构]PeopleSoft Process Scheduler 重要文件说明

    我们都知道PeopleSoft是由几个不同的服务组成的,他们在PeopleSoft体系结构中扮演着自己的角色.这些服务具有不同的文件结构并包含重要的可执行文件和配置文件. 以下是Peoplesoft体 ...

  9. 深入 HTML5 Web Worker 应用实践:多线程编程

    深入 HTML5 Web Worker 应用实践:多线程编程 HTML5 中工作线程(Web Worker)简介 至 2008 年 W3C 制定出第一个 HTML5 草案开始,HTML5 承载了越来越 ...

  10. 深入浅析JavaScript中的constructor

    constructor 属性返回对创建此对象的数组函数的引用.本文给大家介绍JavaScript中的constructor ,需要的朋友参考下吧 定义和用法 constructor 属性返回对创建此对 ...