/**
题目:hdu6055 Regular polygon
链接:http://acm.hdu.edu.cn/showproblem.php?pid=6055
题意:给定n个坐标(x,y)。x,y都是整数,求有多少个正多边形。因为点都是整数点,所以只可能是正四边形。
思路:
(x1,y2)(x2,y2)=》(x,y) = (x2-x1,y2-y1)
向量(x,y)逆时针旋转90度:(-y,x);那么可以得到垂直(x,y)的向量,并通过(x2,y2)获得以(x2,y2)为起点的向量终点(x2+(-y),y2+x);
然后继续旋转90度,(-x,-y);那么得到以(x2+(-y),y2+x)为起点的向量终点(x2+(-y)+(-x),y2+x+(-y));如果求出来的这两个点都存在,
那么这四个点可以构成正四边形。由于一个正四边形四条边,所以每个正四边形算了四次,最后/4即可。 */ #include<iostream>
#include<cstdio>
#include<algorithm>
#include<map>
#include<vector>
#include<queue>
#include<cstring>
#include<cmath>
using namespace std;
typedef pair<int,int> P;
typedef long long LL;
const int N = ;
const int mod = 1e9+;
const int INF = 0x3f3f3f3f;
int f[][];
struct node
{
int x, y;
}t[N];
void rotate(int &vx,int &vy)
{
int t = -vy;
vy = vx;
vx = t;
}
int solve(int i,int j)
{
int vx = t[j].x-t[i].x, vy = t[j].y-t[i].y;
rotate(vx,vy);
int x = t[j].x+vx, y = t[j].y+vy;
rotate(vx,vy);
int xx = x+vx, yy = y+vy;
if(x>||y>||xx>||yy>||x<||y<||xx<||yy<) return ;
return f[x][y]&&f[xx][yy];
}
int main(void)
{
int n;
while(scanf("%d",&n)==)
{
memset(f, , sizeof f);
for(int i = ; i <= n; i++){
scanf("%d%d",&t[i].x,&t[i].y);
t[i].x+=, t[i].y+=;
f[t[i].x][t[i].y] = ;
}
int ans = ;
for(int i = ; i <= n; i++){
for(int j = ; j <= n; j++){
if(i==j) continue;
ans += solve(i,j);
}
}
printf("%d\n",ans/);
}
return ;
}

hdu6055 Regular polygon 脑洞几何 给定n个坐标(x,y)。x,y都是整数,求有多少个正多边形。因为点都是整数点,所以只可能是正四边形。的更多相关文章

  1. HDU6055 Regular polygon(计算几何)

    Description On a two-dimensional plane, give you n integer points. Your task is to figure out how ma ...

  2. HDU 6055 Regular polygon

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

  3. HDU 6055 17多校 Regular polygon(计算几何)

    Problem Description On a two-dimensional plane, give you n integer points. Your task is to figure ou ...

  4. 2017ACM暑期多校联合训练 - Team 2 1011 HDU 6055 Regular polygon (数学规律)

    题目链接 **Problem Description On a two-dimensional plane, give you n integer points. Your task is to fi ...

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

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

  6. 2017 Multi-University Training Contest - Team 2 &hdu 6055 Regular polygon

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

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

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

  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. LightOJ 1285 - Drawing Simple Polygon (几何,极角排序)

    1285 - Drawing Simple Polygon   PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: ...

随机推荐

  1. 练oj时的小技巧(大多都在oj记录里,这是被忘记的部分)

    1. getline()函数,头文件为#include<string> getline(istream &in, string &s):从输入流读入一行到string s ...

  2. 突破防盗链机制:使用referrer-killer

    在开发it博客汇的过程中遇到一个难题:很多图片链接设置了防盗链机制,从我的网站请求图片会返回403错误,但直接在浏览器中打开图片的url时却又正常. 使用fiddler抓包发现,从我的网站请求图片会带 ...

  3. [Angular] Two things about OnChanges Lifecycle hook

    1. ngOnChanges is called before ngOnInit but after constructor() 2. ngOnChanges is called because of ...

  4. [Algorithms] Build a Binary Tree in JavaScript and Several Traversal Algorithms

    A binary tree is a tree where each node may only have up to two children. These children are stored ...

  5. EventBus的粘性事件

    下午赶去公司解决了电台业务首次语音搜台后(用到服务,但只出一个独立的Activity,主界面并没有打开)不能听歌识曲的问题. 排查到最后,去识别的消息确实是发出去了,但是却没有收到,没有收到消息当然不 ...

  6. unity3d中布娃娃系统

    原地址:http://blog.csdn.net/pizi0475/article/details/9771941 转自: http://forum.mirax.com.tw/unity/viewto ...

  7. Android_WebView_全屏

    WebView(网络视图)能加载显示网页,能够将其视为一个浏览器. 它使用了WebKit渲染引擎加载显示网页,实现WebView有下面两种不同的方法: 第一种方法的步骤: 1.在要Activity中实 ...

  8. css新单位 vw , vh

    考虑到未来响应式设计的开发,如果你需要,浏览器的高度也可以基于百分比值调整.但使用基于百分比值并不总是相对于浏览器窗口的大小定义的最佳方式,比如字体大小不会随着你窗口改变而改变,如今css3引入的新单 ...

  9. 跨站请求伪造解决办法之——过滤referer

    当然,referer也是可以伪造的,Http请求本身就没有不能伪造的东西. 所以本方法只能在一定程度上防止非法请求,仅供参考. 项目的web.xml中增加过滤器: <filter> < ...

  10. vi/vim 查找替换命令

    vi/vim 中可以使用 :s 命令来替换字符串.该命令有很多种不同细节使用方法,可以实现复杂的功能,记录几种在此,方便以后查询.    :s/vivian/sky/ 替换当前行第一个 vivian ...