• HDU 5533 Dancing Stars on Me( 有趣的计算几何 )



    **链接:****传送门 **

    题意:给出 n 个点,判断能不能构成一个正 n 边形,这 n 个点坐标是整数

    思路:这道题关键就在与这 n 个点坐标是正整数!!!可以简单的分析,如果 n != 4,那一定就不能构成正 n 边形,否则暴力一下找到最小距离,这个最小距离一定是最短边长,暴力查找一下等于这个边长边的个数,如果是 4 个就能构成正 4 边形了

    balabala:

    1. 分析 + 暴力出奇迹,出题人还是蛮有趣的!希望能在比赛中get到这些关键点。
    2. A strong man will struggle with the storms of fate.

    /*************************************************************************
        > File Name: hdu5533.cpp
        > Author:    WArobot 
        > Blog:      http://www.cnblogs.com/WArobot/ 
        > Created Time: 2017年05月10日 星期三 19时33分30秒
     ************************************************************************/
    
    #include<bits/stdc++.h>
    using namespace std;
    
    struct point{
    	int x,y;
    }po[110];
    
    double len[110][110];
    int T,n;
    double dis(point a,point b){
    	return (a.x-b.x)*(a.x-b.x) + (a.y-b.y)*(a.y-b.y);
    }
    int main(){
    	scanf("%d",&T);
    	while(T--){
    		memset(len,0,sizeof(len));
    		scanf("%d",&n);
    		for(int i=0;i<n;i++){
    			scanf("%d%d",&po[i].x,&po[i].y);
    		}
    		if(n!=4)	printf("NO
    ");
    		else{
    			double min_len = 1e10;
    			for(int i=0;i<n;i++)
    				for(int j=i+1;j<n;j++){
    					len[i][j] = dis( po[i], po[j] );
    					min_len = min( min_len , len[i][j] );
    				}
    			int cnt = 0;
    			for(int i=0;i<n;i++)
    				for(int j=i+1;j<n;j++)
    					if( len[i][j] == min_len )
    						cnt++;
    			if(cnt == 4)	printf("YES
    ");
    			else			printf("NO
    ");
    		}
    	}
    	return 0;
    }
  • 相关阅读:
    SpringBoot EnumValidator验证器实现
    【原创】SpringCloud:基于Spring Cloud netflix全家桶搭建一个完整的微服务架构系统
    Hystrix Dashboard监控报“Unable to connect to Command Metric Stream”?
    Mysql sql_mode的合理设置
    nginx 调优
    函数指针
    进程与线程
    大小端学习
    联合体和结构体
    内存分配
  • 原文地址:https://www.cnblogs.com/WArobot/p/6837917.html
Copyright © 2020-2023  润新知