CSP认证201912-2--回收站选址

一、题目

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、分析

这一道题是认证试卷里的第二题,会设置点难度,但是不会难到做不出来,一般都会把难度放到存储空间和循环时间损耗上.说起来一把辛酸泪,上次认证的时候脑袋发懵,只拿了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
*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值