Regular polygon

Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 2004    Accepted Submission(s): 795

Problem Description
On
a two-dimensional plane, give you n integer points. Your task is to
figure out how many different regular polygon these points can make.
Input
The
input file consists of several test cases. Each case the first line is a
numbers N (N <= 500). The next N lines ,each line contain two number
Xi and Yi(-100 <= xi,yi <= 100), means the points’ position.(the
data assures no two points share the same position.)
Output
For each case, output a number means how many different regular polygon these points can make.
 
Sample Input
4
0 0
0 1
1 0
1 1
6
0 0
0 1
1 0
1 1
2 0
2 1
Sample Output
1
2
题意:给你n个整数点 问你组成正多边形的有几组
因为题目给的是整数点 只要正四边形才能是整点
所以我们只要枚举其中任意两个点 利用旋转公式可以得到其它两个点 判断其他两个点是否存在就可以了
旋转公式是 x=xcos@-ysin@
          y=xsin@-ycos@;
 #include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cstdlib>
#include<string.h>
#include<set>
#include<vector>
#include<queue>
#include<stack>
#include<map>
#include<cmath>
typedef long long ll;
typedef unsigned long long LL;
using namespace std;
const double PI=acos(-1.0);
const double eps=0.0000000001;
const int N=+;
struct node{
int x,y;
}a[N];
int vis[N][N];
int main(){
int n;
while(scanf("%d",&n)!=EOF){
memset(vis,,sizeof(vis));
for(int i=;i<=n;i++){
scanf("%d%d",&a[i].x,&a[i].y);
vis[a[i].x+][a[i].y+]=i;
}
ll ans=;
int x,y;
int xx,yy;
int len;
for(int i=;i<=n;i++){
for(int j=i+;j<=n;j++){
if(i==j)continue;
x=(a[j].y-a[i].y)+a[i].x;
y=(a[j].x-a[i].x)*(-)+a[i].y;
xx=-(a[i].y-a[j].y)+a[j].x;
yy=(a[i].x-a[j].x)+a[j].y;
int t1=vis[x+][y+];
int t2=vis[xx+][yy+];
if(t1&&t2)ans++;
x=-(a[j].y-a[i].y)+a[i].x;
y=(a[j].x-a[i].x)+a[i].y;
xx=(a[i].y-a[j].y)+a[j].x;
yy=-(a[i].x-a[j].x)+a[j].y;
int t3=vis[x+][y+];
int t4=vis[xx+][yy+];
if(t3&&t4)ans++;
}
}
// cout<<ans<<endl;
ans=ans/;
printf("%I64d\n",ans);
}
}

2017 Multi-University Training Contest - Team 2 &hdu 6055 Regular polygon的更多相关文章

  1. HDU 6055 - Regular polygon | 2017 Multi-University Training Contest 2

    /* HDU 6055 - Regular polygon [ 分析,枚举 ] 题意: 给出 x,y 都在 [-100, +100] 范围内的 N 个整点,问组成的正多边形的数目是多少 N <= ...

  2. 2017 Multi-University Training Contest - Team 2 &&hdu 6050 Funny Function

    Funny Function Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  3. 2017 Multi-University Training Contest - Team 2 &&hdu 6053 TrickGCD

    TrickGCD Time Limit: 5000/2500 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total ...

  4. 2017 Multi-University Training Contest - Team 2&&hdu 6047 Maximum Sequence

    Maximum Sequence Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  5. HDU 6055 Regular polygon

    Regular polygon Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)T ...

  6. 【2017 Multi-University Training Contest - Team 7 && hdu 6121】Build a tree

    [链接]点击打开链接 [题意] 询问n个点的完全k叉树,所有子树节点个数的异或总和为多少. [题解] 考虑如下的一棵k=3叉树,假设这棵树恰好有n个节点. 因为满的k叉树,第i层的节点个数为k^(i- ...

  7. 【 2017 Multi-University Training Contest - Team 9 && hdu 6162】Ch’s gift

    [链接]h在这里写链接 [题意] 给你一棵树,每个节点上都有一个权值. 然后给你m个询问,每个询问(x,y,a,b); 表示询问x->y这条路径上权值在[a,b]范围内的节点的权值和. [题解] ...

  8. HDU 6055 Regular polygon —— 2017 Multi-University Training 2

    Regular polygon Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)T ...

  9. 【2017多校训练2+计算几何+板】HDU 6055 Regular polygon

    http://acm.hdu.edu.cn/showproblem.php?pid=6055 [题意] 给定n个格点,问有多少个正多边形 [思路] 因为是格点,只可能是正方形 枚举正方形的对角线,因为 ...

随机推荐

  1. 联想 K5 Note(L38012)免解锁BL 免rec 保留数据 ROOT Magisk Xposed 救砖 ZUI3.9.218

    >>>重点介绍<<< 第一:本刷机包可卡刷可线刷,刷机包比较大的原因是采用同时兼容卡刷和线刷的格式,所以比较大第二:[卡刷方法]卡刷不要解压刷机包,直接传入手机后用 ...

  2. Linux 查询PID和端口号

    https://www.cnblogs.com/understander/p/5546458.html

  3. Android之Fragment的优点和作用

    一:什么是Fragment 碎片.片段.其目的是为了解决不同屏幕分辩率的动态和灵活UI设计.大屏幕如平板小屏幕如手机,平板电脑的设计使得其有更多的空间来放更多的UI组件,而多出来的空间存放UI使其会产 ...

  4. Android中Application类总结

    本文出处: 炎之铠csdn博客:http://blog.csdn.net/totond 炎之铠邮箱:yanzhikai_yjk@qq.com 本文原创,转载请注明本出处! 前言 最近的开发中经常使用到 ...

  5. 让System.Drawing.Bitmap可以在linux运行

    .net core的bitmap使用的是以下类库,但无法在linux运行 https://github.com/CoreCompat/CoreCompat 在linux运行需要安装runtime.li ...

  6. python SQLALchemy连接数据库。

    一.ORM与SQLALchemy简介 ORM 全程object Relational Mapping,对象关系映射.简单的说,ORM将数据库中的表与面向对象中的类建立了一种对应关系.这样在操作数据库时 ...

  7. Django - 创建多对多及增加示例

    创建多对多: 方式一: 自定义关系表 备注:自定义表Host.Application,通过自定义表,将表Host和Application进行关联(通过外键方式工): 执行语句:python manag ...

  8. 洛谷——P2169 正则表达式

    P2169 正则表达式 题目背景 小Z童鞋一日意外的看到小X写了一个正则表达式的高级程序,这个正则表达式程序仅仅由字符“0”,“1”,“.”和“*”构成,但是他能够匹配出所有在OJ上都AC的程序的核心 ...

  9. Coefficient Computation (大整数、Java解决)

    Coefficient Computation UVALive8265 题意:计算组合数C(n,k)的值并将值按给定的进制输出. 思路:Java大整数类硬上. PS:刚刚学完Java的大整数类,结果却 ...

  10. Django-----中间件Cookie

    Cookie: 用来跟踪用户的会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份. Cookie机制 ...