hdu--1077--Catching Fish
思路:
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的更多相关文章
- HDU 1077 Catching Fish(用单位圆尽可能围住多的点)
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1077 Catching Fish Time Limit: 10000/5000 MS (Java/Oth ...
- (水题)HDU - 1077 - Catching Fish - 计算几何
http://acm.hdu.edu.cn/showproblem.php?pid=1077 很明显这样的圆,必定有两个点在边界上.n平方枚举圆,再n立方暴力判断.由于没有给T,所以不知道行不行.
- hduoj 1077 Catching Fish 求单位圆最多覆盖点个数
Catching Fish Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)To ...
- Catching Fish[HDU1077]
Catching Fish Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)To ...
- hdu 1077(单位圆覆盖问题)
Catching Fish Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)To ...
- HDU 3395 Special Fish(拆点+最大费用最大流)
Special Fish Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tot ...
- [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 ...
- HDU 3469 Catching the Thief (博弈 + DP递推)
Catching the Thief Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- hdu 1077 (圆交)
Problem - 1077 我们可以知道,当这个单位圆可以覆盖到最多的点的时候,必定最少有两个点位于这个圆的圆周上,于是就有网上众多的O(N^3)的枚举两个在圆上的点的暴搜做法. 然而这题是可以用圆 ...
- HDU 1077
题意 : 给你 N 个点, 问一个单位圆最大能包括几个点 直接暴力枚举圆心, 计算个数 O(n^ 3): 精度,细节都要注意, //#include<bit/stdc++.h> ...
随机推荐
- angular.js小知识总结
angular-watch.html 代码如下: <script> var app = angular.module('app',[]); app.controller('ctrl',fu ...
- Chapter 3. Video Coding Concepts
本章主要介绍一些有关视频编码的概念 时域模型(Temporal Model) 时域模型的作用是去除帧间冗余.如:将第二帧减去第一帧,得到的剩余信息,其能量会远小于第二帧本身. 基于块的运动估计和补偿 ...
- 2017寒假零基础学习Python系列之函数之 定义默认参数
在定义函数时,可以有默认参数例如Python自带的函数int(),其实就是两个参数,我们既可以传一个参数,又可以传两个参数 int(') >>>123 int(',8) 83 int ...
- Tomcat学习笔记(一)一个简单的Web服务器
内容为<深入剖析Tomcat>第一章重点,以及自己的总结,如有描述不清的,可查看原书. 一.HTTP协议: 1.定义:用于服务器与客户端的通讯的协议,允许web服务器和浏览器通过互联网进行 ...
- 百度云bcc建站
一.购买百度云服务 1.百度云bcc购买网页http://bce.baidu.com/product/bcc.html 2.买完后管理:http://console.bce.baidu.com/bcc ...
- A start job is running for xxx to stop
CentOS7开机时,遇到这样的问题已经好多回了,查阅了许多这样的问题,总是没能找到自己想要的答案. 今天本来启动顺利,但是设置mysql.httpd服务开机启动之后,再次开机时又遇到这样的问题. 这 ...
- virtualbox 安装centos系统,设置双网卡实现虚拟机上网及主宿互访
写在前面:前两天想玩linux,在VMware中装了centos,进入系统后发现连不上网,搜了下教程,/etc/sysconfig/network-scripts/目录下没有 ifcfg-e*的文件 ...
- Luogu 1090 合并果子(贪心,优先队列,STL运用)
Luogu 1090 合并果子(贪心,优先队列,STL运用) Description 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.多多决定把所有的果子合成一堆. 每 ...
- php与MySQL(基本操作)
PHP连接 MySQL 在我们访问 MySQL 数据库前,我们需要先连接到数据库服务器,连接服务器,我们使用mysqli_connect()函数. 在使用这个函数之前,我们首先来看一下这个函数的语法: ...
- ES6速记手册
1.三元操作符 这是一个很好的节省代码当你想要编写一个如果. . else语句在一线. 普通写法: const x = 20;let big;if (x > 10) { 速记: const bi ...