zoukankan      html  css  js  c++  java
  • hdu 1077 Catching Fish

    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    #include<iostream>
    #include<math.h>
    using namespace std;
    const int MAXN=330;
    const double eps=1e-4;
    
    double p[MAXN][2];
    double xx1,yy1,xx2,yy2;
    
    double dis(int i,int j)
    {
        return sqrt((p[i][0]-p[j][0])*(p[i][0]-p[j][0])+(p[i][1]-p[j][1])*(p[i][1]-p[j][1]));
    }
    
    void get_center_point(int a,int b)
    {
        double x0=(p[a][0]+p[b][0])/2;
        double y0=(p[a][1]+p[b][1])/2;
        double d=sqrt(1-((p[a][0]-p[b][0])*(p[a][0]-p[b][0])+(p[a][1]-p[b][1])*(p[a][1]-p[b][1]))/4);
        if(fabs(p[a][1]-p[b][1])<1e-6)
        {
            xx1=x0;
            yy1=y0+d;
            xx2=x0;
            yy2=y0-d;
        }
        else
        {
            double tmp=atan(-(p[a][0]-p[b][0])/(p[a][1]-p[b][1]));
            double dx=d*cos(tmp);
            double dy=d*sin(tmp);
            xx1=x0+dx;
            yy1=y0+dy;
            xx2=x0-dx;
            yy2=y0-dy;
        }
    }
    
    int main()
    {
        int T;
        int n;
        scanf("%d",&T);
        while(T--)
        {
            scanf("%d",&n);
            for(int i=0;i<n;i++)
               scanf("%lf%lf",&p[i][0],&p[i][1]);
            int ans=1;
            for(int i=0;i<n;i++)
              for(int j=i+1;j<n;j++)
              {
                  if(dis(i,j)>2.0)continue;
                  get_center_point(i,j);
                  int cnt=0;
                  for(int i=0;i<n;i++)
                    if(sqrt((p[i][0]-xx1)*(p[i][0]-xx1)+(p[i][1]-yy1)*(p[i][1]-yy1))<1+eps)
                      cnt++;
                  if(cnt>ans)ans=cnt;
                  cnt=0;
                  for(int i=0;i<n;i++)
                    if(sqrt((p[i][0]-xx2)*(p[i][0]-xx2)+(p[i][1]-yy2)*(p[i][1]-yy2))<1+eps)
                      cnt++;
                  if(cnt>ans)ans=cnt;
              }
            printf("%d\n",ans);
        }
        return 0;
    }

  • 相关阅读:
    Mermaid | 强大的画图渲染脚本
    Tools | windows剪切板增强版
    Eclipse | eclipse食用教程
    WebSites | 常用工具网站
    Extensions | Extension && Plugins
    Java | IDE-Eclipse下载安装
    敲个采药玩玩
    今日sb题之 sdnuoj 1064
    stl概述
    给定 n 个字符串,求有多少字符串是其他字符串的前缀。
  • 原文地址:https://www.cnblogs.com/java20130726/p/3218257.html
Copyright © 2011-2022 走看看