【2017 Multi-University Training Contest - Team 2】 Regular polygon
2024-08-31 18:23:55
【Link】:
【Description】
给你n个点整数点;
问你这n个点,能够组成多少个正多边形
【Solution】
整点只能构成正四边形.
则先把所有的边预处理出来;
枚举每某两条边为对角线的情况;
看看这两条对角线能否组成一个正方形;
可以的话,递增答案.
【NumberOf WA】
1
【Reviw】
(排序的时候边的数目和点的弄混了)
【Code】
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 500;
struct abc{
int x[2],y[2],dis;
};
abc bian[N*N+100];
int x[N+10],y[N+10];
int n,tot;
int sqr(int x){
return x*x;
}
int get_dis(int i,int j){
return sqr(x[i]-x[j])+sqr(y[i]-y[j]);
}
bool cmp(abc a,abc b){
return a.dis < b.dis;
}
main(){
while (~scanf("%lld",&n)){
int ans = 0;
tot = 0;
for (int i = 1;i <= n;i++)
scanf("%lld%lld",&x[i],&y[i]);
for (int i = 1;i <= n-1;i++)
for (int j = i+1;j <= n;j++){
tot++;
bian[tot].x[0] = x[i],bian[tot].y[0] = y[i];
bian[tot].x[1] = x[j],bian[tot].y[1] = y[j];
bian[tot].dis = get_dis(i,j);
}
sort(bian+1,bian+1+tot,cmp);
for (int i = 1;i <= tot;i++){
int j = i;
while (j+1 <= tot && bian[j+1].dis == bian[i].dis) j++;
for (int k = i;k <= j-1;k++)
for (int l = k+1;l <= j;l++){
int x1 = bian[k].x[0],y1 = bian[k].y[0];
int x2 = bian[k].x[1],y2 = bian[k].y[1];
int x3 = bian[l].x[0],y3 = bian[l].y[0];
int x4 = bian[l].x[1],y4 = bian[l].y[1];
if ( (x1+x2==x3+x4) && (y1+y2 == y3+y4) ){
if ( (x2-x1)*(x4-x3) + (y2-y1)*(y4-y3) == 0){
ans++;
}
}
}
i = j;
}
printf("%lld\n",ans);
}
return 0;
}
最新文章
- C - NP-Hard Problem(二分图判定-染色法)
- linux ubuntu14 更改为root用户登录
- CCPC2016合肥现场赛
- Windows Desktop 调用 WinRT api
- SQLSERVER 里SELECT COUNT(1) 和SELECT COUNT(*)哪个性能好?
- FFmpeg 官方 20160227 之后 追加 libmfx 无法在 xp 上运行的解决方法
- radio选中
- margin负值在页面布局中的应用
- 中国餐馆过程(CRP)
- NEERC 2010, Eastern subregional contest
- FileFilter, FilenameFilter用法和文件排序
- 【翻译】Microsoft Ajax Minifier 快速使用指南(与VS集成使用) 编译后直接压缩项目的JS或CSS文件
- 终于懂了:Delphi消息的Result完全是生造出来的,不是Windows消息自带的(Delphi对Windows编程体系的改造越大,学习收获就越大)——消息是否继续传递就看这个Result
- div光标定位问题总结
- 【Jquery】prop与attr的差别
- 3.if结构
- NodeJS 模块&;函数
- 20145325张梓靖 《Java程序设计》第8周学习总结
- java多线程以及Android多线程
- npm是什么NPM的全称是Node Package Manager