HDU 5365 Run(暴力)

题意:给一个n和n个整数坐标问这些点能组成几个不同正三角形,正方形,正五边形,正六边形。

分析:由于坐标都是整数,使用只可能有正方形,其他都不可能,那么只要对于每四个不同的点,判断2组对边相等,两条对角线也相等,临边也相等即可。

代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <queue>
#include <algorithm>
#pragma comment(linker,"/STACK:1024000000,1024000000")
using namespace std;
const int maxn = 25;
int d[2][maxn];
int main()
{
    int n;
    while(scanf("%d",&n)!=EOF){
        for(int i=1;i<=n;i++) scanf("%d%d",&d[0][i],&d[1][i]);
        int ans=0;
        for(int k1=1;k1<=n-3;k1++)
            for(int k2=k1+1;k2<=n-2;k2++)
                for(int k3=k2+1;k3<=n-1;k3++)
                    for(int k4=k3+1;k4<=n;k4++){
                        double b1=sqrt((d[0][k1]-d[0][k2])*(d[0][k1]-d[0][k2])*1.0+(d[1][k1]-d[1][k2])*(d[1][k1]-d[1][k2]));//这三组边是对边,对边,对角线三种任意的顺序
                        double b2=sqrt((d[0][k3]-d[0][k4])*(d[0][k3]-d[0][k4])*1.0+(d[1][k3]-d[1][k4])*(d[1][k3]-d[1][k4]));
                        double c1=sqrt((d[0][k1]-d[0][k3])*(d[0][k1]-d[0][k3])*1.0+(d[1][k1]-d[1][k3])*(d[1][k1]-d[1][k3]));
                        double c2=sqrt((d[0][k2]-d[0][k4])*(d[0][k2]-d[0][k4])*1.0+(d[1][k2]-d[1][k4])*(d[1][k2]-d[1][k4]));
                        double d1=sqrt((d[0][k1]-d[0][k4])*(d[0][k1]-d[0][k4])*1.0+(d[1][k1]-d[1][k4])*(d[1][k1]-d[1][k4]));
                        double d2=sqrt((d[0][k2]-d[0][k3])*(d[0][k2]-d[0][k3])*1.0+(d[1][k2]-d[1][k3])*(d[1][k2]-d[1][k3]));
                        if(b1==b2&&c1==c2&&d1==d2&&(b1==c1||b1==d1||c1==d1)) ans++;                 //分别判断第一组对边,第二组对边,对角线,临边相等
                    }
        printf("%d\n",ans);
    }
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-12-21 03:57:38

HDU 5365 Run(暴力)的相关文章

BestCoder Round #50 (div.2) HDU 5365 Run(简单几何)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5365 题面:(严重吐槽,看着真不舒服,还是改一下吧) Run Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 549    Accepted Submission(s): 245 Problem Description AFA is a g

HDU 5365 Run

因为给出的点都是整数,都在网格上的,所以正三角形,正五边形,正六边形都是不存在的. 暴力枚举四个点,判断一下是不是正方形即可. #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> using namespace std; int n; int x[30],y[30]; class Coordinate { public: double xCoordinate; doub

hdu 5365 Run 几何 判定四边形

欢迎参加--每周六晚的BestCoder(有米!) Run Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 563    Accepted Submission(s): 253 Problem Description AFA is a girl who like runing.Today,he download an app about

HDU 5365 Run(大水题)

大致题意: 8*8的整点格子,输入16个整点,求多少种点的集合可以组成正3,正4,5,6边形 思路:sb题啊...整点格子组成不了n !=4的所有正多边形,只要判是否能组成正方形就可以了 这里有个优美的无穷递降的证明:http://www.zhihu.com/question/25304120 而我是枚举所有点的集合判断是否能组成正多边形的蠢方法= =,先用凸包对点排个序,然后判各点距离相等和用余弦定理判个顶角相等..... //#pragma comment(linker, "/STACK:1

hdu 5365 Run(BC 50 B题)(求四边形的个数)

本来准备睡觉,结果还是忍不住想把它A了,因为已经看了题解了, 题意:就是给你一些坐标,都是整数,求一些正多边形的数目,官方题解说是地球人都知道整数坐标构不成正三角形,正五边形和正六边形的...然而我并不知道...以后才知道... 所以呢这道题直接暴力就可以了,求正四边形的个数,这里判断是否是正四边形用的是四条边相等,而且两条对角线相等,并且边比对角线小,我也不知道是否这样一定是正四边形(...) 放代码: #include<iostream> #include<cstdio> #i

hdu 4876(剪枝+暴力)

题意:给定n,k,l,接下来给出n个数,让你从n个数中选取k个数围成一圈,然后从这k个数中随意选出连续的m(m>=1&&m<=k)个数进行异或后得到[l,r]区间的所有值,让你求最大的r. 分析:关键问题是需要剪枝! 代码实现: #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> #inclu

hdu 4499 Cannon(暴力)

题目链接:hdu 4499 Cannon 题目大意:给出一个n*m的棋盘,上面已经存在了k个棋子,给出棋子的位置,然后求能够在这种棋盘上放多少个炮,要求后放置上去的炮相互之间不能攻击. 解题思路:枚举行放的情况,用二进制数表示,每次放之前推断能否放下(会不会和已经存在的棋子冲突),放下后推断会不会互相攻击的炮,仅仅须要对每一个新加入的炮考虑左边以及上边就能够了. #include <cstdio> #include <cstring> #include <algorithm&

hdu 5365 (bc #50 1002 )Run

Run Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 594    Accepted Submission(s): 265 Problem Description AFA is a girl who like runing.Today,he download an app about runing .The app can record

HDU 4435 charge-station(暴力+判图)

题目大意:给你一些点,他们可以连通,如果距离超过了d那么就要经过加油站,建立加油站的费用为第i个点是2^(i-1).求费用最小,输出二进制表示的最小费用. 费用和sum最坏等于=2^0+2^1+--+2^(n-1).所以最高位为0这个数字才会最小,从最高位暴力枚举如果删掉这个点之后图是连通的那么就可以删掉,否则不可以. 求图是否连通的时候可以爆搜求解,也可以并查集. charge-station Time Limit: 2000/1000 MS (Java/Others)    Memory L