【csp201912-2】回收站选址

news/2024/9/19 9:24:31/文章来源:https://www.cnblogs.com/rabbit1103/p/18414483

题目背景

  开学了,可是校园里堆积了不少垃圾杂物。

  热心的同学们纷纷自发前来清理,为学校注入正能量~

题目描述

通过无人机航拍我们已经知晓了n处尚待清理的垃圾位置,其中第i(1≤i≤n)处的坐标为(x,y),保证所有的坐标均为整数。
我们希望在垃圾集中的地方建立些回收站。具体来说,对于一个位置(x,y)是否适合建立回收站,我们主要考虑以下几点:

  • (x,y)必须是整数坐标,且该处存在垃圾;
  • 上下左右四个邻居位置,即(x,y+1)、(x,y-1)、(x+1,y)和(x-1,y)处,必须全部存在垃圾;
  • 进一步地,我们会对满足上述两个条件的选址进行评分,分数为不大于4的自然数,表示在(x±1,y±1)四个对角位置中有几处存在垃圾。

现在,请你统计一下每种得分的选址个数。

输入格式 

从标准输入读入数据。
输入总共有 n+1行。
第1行包含一个正整数,表示已查明的垃圾点个数。
第1+i行(1≤i≤n)包含由一个空格分隔的两个整数xi和yi,表示第i处垃圾的坐标。
保证输入的n个坐标互不相同。

输出格式

输出到标准输出。
输出共五行,每行一个整数,依次表示得分为0、1、2、3和4的回收站选址个数。

样例1输入

7
1 2
2 1
0 0
1 1
1 0
2 0
0 1

样例1输出

0

0

1

0

0

样例1解释

样例2输入

2

0 0

-100000 10

样例2输出

0

0

0

0

0

样例2解释

不存在可选地址。

样例3输入

11
9 10
10 10
11 10
12 10
13 10
11 9
11 8
12 9
10 9
10 11
12 11

样例3输出

0

2

1

0

0

样例3解释

1分选址:(10,10)和(12,10);

2 分选址:(11,9)。

数据范围

提示

本题中所涉及的坐标皆为整数,且保证输入的坐标两两不同

题解

用map标记有垃圾的坐标,遍历每一个有垃圾的点,检测8个方向的垃圾

对于上下左右4个方向,可以用二进制来标记每个方向是否有垃圾,有则二进制位为1,没有则为0,即,用1,2,4,8表示上下左右四个方向,变量s表示四个方向的总状态,初始为0,上面有垃圾则s+1,下面有垃圾则s+2,检测完四个方向若s的值为15则表示四个方向都有垃圾,可以作为回收站,否则不能作为回收站

对于四个角的方向,在检测时计算得分,检测完后将相应得分的地址数+1

 

 1 #include <cstdio>
 2 #include <map>
 3 #define pa pair<int,int>
 4 using namespace std;
 5 const int dx[8]={-1,1,0,0,-1,-1,1,1};
 6 const int dy[8]={0,0,-1,1,-1,1,-1,1};
 7 int n,num[10];
 8 map<pa,bool> mp;
 9 struct node{
10     int x,y;
11 }a[1005];
12 int main()
13 {
14     int i,j,x,y,xx,yy;
15     scanf("%d",&n);
16     for (i=1;i<=n;i++)
17       scanf("%d%d",&a[i].x,&a[i].y),
18       mp[make_pair(a[i].x,a[i].y)]=1;
19     int s,cnt;
20     for (int k=1;k<=n;k++)
21     {
22         x=a[k].x;
23         y=a[k].y;
24         for (s=i=0;i<4;i++)
25         {
26             xx=x+dx[i];
27             yy=y+dy[i];
28             if (mp[make_pair(xx,yy)])
29               s|=(1<<i);
30         }
31         if (s<15) continue;
32         for (cnt=0,i=4;i<8;i++)
33         {
34             xx=x+dx[i];
35             yy=y+dy[i];
36             if (mp[make_pair(xx,yy)])
37               cnt++;
38         }
39         num[cnt]++;
40     }
41     for (i=0;i<5;i++)
42       printf("%d\n",num[i]); 
43     return 0;
44 }

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/797123.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Ehviewer绿色版】1.9.8.4最新版本下载2024安卓苹果

Ehviewer 是一款主要用于浏览和下载漫画、插画等二次元图像内容的软件。适用安卓和苹果系统,Ehviewer拥有海量的漫画作品,涵盖各种题材和风格,包括日本漫画、韩国漫画、欧美漫画以及国内的一些同人创作等。无论是热门的商业漫画还是小众的独立作品,都能在 Ehviewer上找到,…

uniapp - uView 组件库的u-button 不支持 @click.stop事件,会报错 - 解决

包一层view即可,点击事件不要写在按钮上 本文来自博客园,作者:岑惜,转载请注明原文链接:https://www.cnblogs.com/c2g5201314/p/18414452响应开源精神相互学习,内容良币驱除劣币

章13——常用类——包装类,Integer类

包装类ctrl + b 可以跳转源代码。char 和 boolean的继承体系:包装类和基本数据的转换//装箱int n = 200;Integer integer = n;//拆箱int n1 = integer;包装类练习题三元运算符中是一个整体,其中精度最高的是double,所以无论结果返回什么,都会提高obj1的精度。 包装类到Stri…

大模型应用开发初探 : 手搓一个简易Agent

本文简单介绍AI Agent的基本概念 和 工作方式,目前主要有两种开发Agent的模式,一种是高代码手搓,另一种是低代码拖拉拽。然后,通过C# + Semantic Kernel + 智谱LLM模型 演示了如何快速开发一个简易的AI Agent,虽然它只是个Demo,但希望对你快速了解Agent有所帮助!大家好,…

安装vCenter VCSA 7.0 报错 Failed to run vdcpromo 的问题

百度了一下说是DNS的问题,但我也设置了8.8.8.8或电信的dns,都不行。外网找了一下说要设置为127.0.0.1,但是7.0U3a后的版本不允许填写127.0.0.1了。最后找到一个通过CLI的方式安装可以避免这个问题。 首先创建一个CLI的横版文件,内容如下: {"__version": "2…

PostSync介绍

PostSync 促进技术文章发展介绍 这是一个开源的同步文章的软件,你可以使用它来同步你的文章到多个平台。 使用打开浏览器,登录各个平台的账号,掘金、CSDN、知乎、公众号、哔哩哔哩、博客园、个人WordPress 打开config.yaml文件,配置你的浏览器信息以及浏览器用户数据目录 运…

【linux】centos7安装8.4.2版本mysql

1、前置: 清除mysql相关数据rpm -qa | grep mariadbrpm -e --nodeps 查出来的文件名rpm -qa | grep mysqlrpm -e --nodeps 查出来的文件名2、安装mysql依赖包(没试过不装会有什么问题)# 查找libaio [root@node2 ~]# rpm -qa|grep libaio# 安装libaio [root@node2 ~]# yum -y…

QTreeView实现搜索功能并且关键字标红

1、需求描述 实现组织树搜索,关键字红色显示;搜索规则,名称匹配显示,没有匹配不显示,子节点匹配,父节点即使没有匹配也显示;2.实现方法 (1)top节点名称匹配关键则显示,否则隐藏void TreeTaskList::SlotFilterChanged(QString strText) {m_TreeDelegate->setProper…

信息学奥赛初赛天天练-89-CSP-S2023基础题1-linux常用命令、完全平方数、稀疏图、队列、散列表、二叉树、哈夫曼树

PDF文档公众号回复关键字:202409142023 CSP-S 选择题 单项选择题(共15题,每题2分,共计30分:每题有且仅有一个正确选项) 1 在 Linux 系统终端中,以下哪个命令用于创建一个新的目录 ? ( ) A newdir B mkdir C create D mkfold 2 从0,1,2,3,4 中选取 4 个数字,能…

格力-空调遥控器说明书

客厅柜机遥控器 主卧空调遥控器 aa

【YashanDB知识库】单机升级典型问题及应急措施

升级典型问题 官网升级操作指引 离线升级,一般线上操作之前需要照着做一遍,但是由于数据量少、monit进程在测试环境没有启动等原因,一些操作、配置问题在测试过程中不会暴露,在生成操作的时候才暴露,下面3项是比较常见的容易遗漏的: 1、monit进程没停止引起升级失败 moni…