一、题目
二、分析
这一道题是认证试卷里的第二题,会设置点难度,但是不会难到做不出来,一般都会把难度放到存储空间和循环时间损耗上.说起来一把辛酸泪,上次认证的时候脑袋发懵,只拿了50分,到今天再做的时候,编译运行一遍过,心疼我那没到手的50分QAQ
三、代码
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
int n;
long long x[1010];
long long y[1010];
int b1=0;
int book1[1010];//如果第i个坐标的条件一二都满足
int s[5];
int init()
{
for(int i=0;i<1010;i++)
{
x[i]=-1;
y[i]=-1;
book1[i]=-1;
}
for(int i=0;i<5;i++) s[i]=0;
return 0;
}
int judgeRB(int i)//判断第i个坐标能不能当回收站
{
int sum=0;
long long sx=x[i];
long long sy=y[i];
for(int j=0;j<n;j++)
{
if((x[j]==sx)&&(y[j]==sy+1)) sum+=1;
if((x[j]==sx)&&(y[j]==sy-1)) sum+=1;
if((x[j]==sx+1)&&(y[j]==sy)) sum+=1;
if((x[j]==sx-1)&&(y[j]==sy)) sum+=1;
}
if(sum==4)
{
book1[b1++]=i;
}
return 0;
}
int judge_sum(int i)//计算回收站的评分
{
int sum=0;
long long sx=x[i];
long long sy=y[i];
for(int j=0;j<n;j++)
{
if((x[j]==sx-1)&&(y[j]==sy+1)) sum+=1;
if((x[j]==sx-1)&&(y[j]==sy-1)) sum+=1;
if((x[j]==sx+1)&&(y[j]==sy+1)) sum+=1;
if((x[j]==sx+1)&&(y[j]==sy-1)) sum+=1;
}
s[sum]+=1;
return 0;
}
int main()
{
init();
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%lld%lld",&x[i],&y[i]);
}
for(int i=0;i<n;i++)
{
judgeRB(i);
}
for(int i=0;i<b1;i++)
{
judge_sum(book1[i]);
}
for(int i=0;i<4;i++)
printf("%d\n",s[i]);
printf("%d",s[4]);
return 0;
}
/*
11
9 10
10 10
11 10
12 10
13 10
11 9
11 8
12 9
10 9
10 11
12 11
*/