这里写自定义目录标题
第四题 大游戏家(game)
题目∶小E正在和三个朋友一起开黑玩一款新的2D游戏。小E的角色是战士,其他三位分别是法师、坦克和牧师。今天他们要一起组队打一个boss,这张boss图满是悬崖峭壁,一共只有N个位置可以站人。并且 boss血量很厚,普通技能很难打出效果。为此小E的队伍花掉了大量金币购买了一个组合技,能对该boss造成巨大伤害。但是组合技的释放是有要求的,它需要四个不同职业的人同时组成一个正方形才能共同释放。明天就要打boss了,小E想请你帮忙算一下,他们小队一共有多少种站位可以拿来攻击boss。注意同一位置上站不同职业也属于不同情况。
输入∶· 第一行一个整数N,代表有N个位置可以站人。接下来N行,每行两个数,表示个可以站人的坐标。保证输入的坐标都是整数。
输出∶· 一个数,表示可用站位的个数。 数据范围∶·
对于20%的数据,满足1≤N≤20;·
对于50%的数据,满足1≤N≤100;·
对于70%的数据,满足1≤N≤500;·
对于100%的数据,满足1≤N≤1000-1000≤X[i]. Y[i]≤1000。
样例输入∶
7
22
21
12
11
10
01
00
样例输出∶72
上!代!码!
#include <cstdio>
using namespace std;
struct point{
int x,y
};
int g[2010][2010];
int n,ans=0;
point a[1007];
void squarn(point a1,point a2){
int dx=a1.x-a2.x;
int dy=a1.y-a2.y;
point d; //还过两点计算正方形的另外两点
d.x=a1.x+dy;
d.y=a1.y-dy;
Point d1;
dl.x=a2.X+dy;
d1,y=a2.y-dx;
if(g[d.x][d.y]=1 && g[d1.x][d1.y]=1)ans+=6;//若其余两点存在
}
int main(){
scanf(“$d”, &n);
for (int i= 1; in;++i){
scanf("&d&d”,&a[i].x, &a[i].y);
a[i].x += 1000;
a[i].y += 1000;
g[a[i].x][a[i].y]=1;//因为有负数所以要+1000
}
for (int i= 1; i= n;++ i){
for(int j=1; j =n;++j){
if(1 !=j)squarn(a[1],a[j]);//如果两个点相同则不可能是正方形
}
}
printf("&d", ans);
return 0;
}