zoukankan      html  css  js  c++  java
  • hdu 5365 Run(BC 50 B题)(求四边形的个数)

    本来准备睡觉。结果还是忍不住想把它A了。由于已经看了题解了,

    题意:就是给你一些坐标。都是整数,求一些正多边形的数目,官方题讲解是地球人都知道整数坐标构不成正三角形。正五边形和正六边形的。。。

    然而我并不知道。。。以后才知道。

    所以呢这道题直接暴力就能够了,求正四边形的个数。这里推断是否是正四边形用的是四条边相等,并且两条对角线相等。并且边比对角线小,我也不知道是否这样一定是正四边形(。。

    。)(后来网上查了一下,这样是可行的。只是还得添加一个条件,就是长的一组边是短的的根号2倍,意思就是证明有直角存在)sh说的方法我认为也能够。就是对角线垂直相等。。。

    放代码:

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    #include<cmath>
    #include<vector>
    #include<set>
    #include<string>
    #include<algorithm>
    
    using namespace std;
    int solve(int a,int b,int c,int d)
    {
    	return (a-c)*(a-c)+(b-d)*(b-d);
    }
    int cmp(const void *a,const void *b)
    {
    	return *(int *)a - *(int *)b;
    }
    int main()
    {
    	int n,i,j,k,p;
    	int a[25],b[25],c[25];
    	while(cin >> n)
    	{
    		for(i=1; i<=n; i++)
    			cin >> a[i] >> b[i];
    		int ans = 0;
    		for(i=1; i<=n; i++)
    			for(j=i+1; j<=n; j++)
    				for(k=j+1; k<=n; k++)
    					for(p=k+1; p<=n; p++)
    					{
    						c[0] = solve(a[i],b[i],a[k],b[k]);
    						c[1] = solve(a[i],b[i],a[j],b[j]);
    						c[2] = solve(a[i],b[i],a[p],b[p]);
    						c[3] = solve(a[j],b[j],a[k],b[k]);
    						c[4] = solve(a[j],b[j],a[p],b[p]);
    						c[5] = solve(a[k],b[k],a[p],b[p]);
    						qsort(c,6,sizeof(c[0]),cmp);
    						if(c[0]==c[1]&&c[1]==c[2]&&c[2]==c[3]&&c[4]==c[5])
    							ans++;
    					}
    		cout << ans << endl;
    	} 
    	return 0;
    }
    


  • 相关阅读:
    React在componentDidMount里面发送请求
    React 术语词汇表
    React里受控与非受控组件
    React和Vue等框架什么时候操作DOM
    【LeetCode】79. Word Search
    【LeetCode】91. Decode Ways
    【LeetCode】80. Remove Duplicates from Sorted Array II (2 solutions)
    【LeetCode】1. Two Sum
    【LeetCode】141. Linked List Cycle (2 solutions)
    【LeetCode】120. Triangle (3 solutions)
  • 原文地址:https://www.cnblogs.com/yfceshi/p/6814624.html
Copyright © 2011-2022 走看看