• 几何【P2313】 [HNOI2005]汤姆的游戏


    z

    你没有发现两个字里的blog都不一样嘛 qwq

    题目描述--->p2313 [HNOI]汤姆的游戏

    分析

    说不上是分析.

    数据范围给出来,这题明显暴力啊emmm。

    个人认为的坑点.

    这题不要判精度,判精度会挂掉.

    输入点之后,直接暴力枚举图形去判断其是否在这个图形中。

    本来以为长方形给的都是 左上角和右下角.

    结果这题给的是右上角和左下角.

    搞得我取了半天(max,min).

    (代码自己看着都有点恶心.

    (还是我没有看清题的说 emmm.

    注意计算点到圆心的距离的公式

    (sqrt{(x_i-x_j) imes (x_i-x_j) +(y_i-y_j) imes (y_i-y_j))})

    ------------------代码-------------------

    #include<cstdio>
    #include<iostream>
    #include<cmath>
    #define R register 
    using namespace std;
    int n,m;
    struct cod
    {
    	char shape;
    	double a,b,c,d,r;
    }s[508];
    int main()
    {
    	scanf("%d%d",&n,&m);
    	for(R int i=1;i<=n;i++)
    	{
    		cin>>s[i].shape;
    		switch(s[i].shape)
    		{
    			case 'r':
    				{
    					scanf("%lf%lf%lf%lf",&s[i].a,&s[i].b,&s[i].c,&s[i].d);
    					break;
    				}
    			case 'c':
    				{
    					scanf("%lf%lf%lf",&s[i].a,&s[i].b,&s[i].r);
    					break;
    				}
    		}
    	}
    	for(R int i=1;i<=m;i++)
    	{
    		R double x,y;R int cnt=0;
    		scanf("%lf%lf",&x,&y);
    		for(R int j=1;j<=n;j++)
    		{
    			if(s[j].shape=='c')
    			{
    				double dis=sqrt((s[j].a-x)*(s[j].a-x)+(s[j].b-y)*(s[j].b-y));
    				if(dis<s[j].r)
    					cnt++;
    			}
    			else
    			{
    				if(x==s[j].a or x==s[j].c)continue;	
    				if(y==s[j].b or y==s[j].d)continue;
    				if(x>min(s[j].a,s[j].c) and x<max(s[j].c,s[j].a)and y<max(s[j].b,s[j].d) and y>min(s[j].d,s[j].b))
    				cnt++;
    			}
    		}
    		printf("%d
    ",cnt);
    	}
    	
    }
    
  • 相关阅读:
    机器学习之大数据集
    机器学习之协同过滤算法(推荐系统)
    机器学习之异常检测
    机器学习之PCA主成分分析
    机器学习之K-means算法
    机器学习之SVM支持向量机
    机器学习之模型选择与改进
    springmvc spring mybatis插入mysql中文乱码
    springmvc和http404错误
    oracle删除users表空间
  • 原文地址:https://www.cnblogs.com/-guz/p/9723593.html
Copyright © 2020-2023  润新知