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> ...
随机推荐
- 拉勾网招聘数据分析(Echarts, SQL, java)
这次的数据分析与决策课程,我做的是通过爬取拉勾网上的招聘信息,并用爬取到的数据整体分析互联网行业数据,项目做得差不多了,先总结下吧,后边有时间了再完善. 主要工具: Echarts, SQL, ja ...
- Ext template 的使用
Ext template 的使用 Ext.define('app.view.MyDataView', { extend: 'Ext.panel.Panel', xtype: 'myDataView', ...
- EXT 基础环境搭建
EXT 基础环境搭建使用 Sencha CMD 下载地址 https://www.sencha.com/products/extjs/cmd-download/ Sencha CMD 常用命令 API ...
- ifame高度自动适应子页面内容
被这个问题折磨了好久,试了很多方法都不行,总算解决了,记录一下. <div class="iframe-pro" id="iframe-proid"> ...
- JAVA - 深入JAVA 虚拟机 3
类的初始化时机 package practise; class Parent{ static int a =3; static{ System.out.println("Parent sta ...
- 关于MySQL的commit非规律性失败案例的深入分析
案例描述: 一个普通的事务提交,在应用里面会提示commit超时,失败. 一.理论知识 1.关于commit原理,事务提交过程 1.寻找修改的数据页: 1.如果该数据页在内存中,则直接是内存读: 2. ...
- 《javascript 高级程序设计》笔记
1-4章 1.变量①.ECMAScript 变量是松散类型的,也就是说可以用来保存任何类型的数据.换句话说每个变量仅仅是一个用于保存值的占位符.②.如果在函数中使用var定义一个变量,那么这个变量在函 ...
- 4,JPA-Hibernate
一,什么是JPA JPA全称Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中. JPA(Java Pers ...
- tar+pigz+ssh实现大数据压缩传输
磁盘读取---->打包---->压缩------>传输---->解压缩-->拆包---->落盘 |->tar |->gzip |-&g ...
- docker~大叔对术语的解释
回到目录 接触和使用docker已经有1年多了,起初对概念本身理解的不是很好,或者说,没有找到一本比较好的书,在自己的研究下,对docker一些基本的概念有了自己的一些认识和看法,现在分享给正在学习d ...