首页 > 其他分享 >【csp201912-2】回收站选址

【csp201912-2】回收站选址

时间:2024-09-14 17:51:30浏览次数:11  
标签:10 int 坐标 样例 回收站 选址 csp201912 垃圾

题目背景

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

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

题目描述

通过无人机航拍我们已经知晓了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 }

 

标签:10,int,坐标,样例,回收站,选址,csp201912,垃圾
From: https://www.cnblogs.com/rabbit1103/p/18414483

相关文章

  • 铺先生:选址时需要注意什么因素?这三点要避免
    选址时需要注意什么因素?我们在做店铺选址的时候非常容易被外界因素所误导,导致所选择出来的地址与经营需求不符,导致出现这些情况的原因就是你没能注意到某些因素,为了避免再次出现此类情况,下面小编就来跟大家说说吧。1. 缺乏流量缺乏流量的地段对经营产生的危害是非常大的,任何一家脱......
  • 【回收站选址】
    题目代码#include<bits/stdc++.h>usingnamespacestd;constintR=2e9+1;typedeflonglongLL;unordered_set<LL>s;intpiles[5];intdx[4]={-1,0,1,0},dy[4]={0,1,0,-1};intdx1[4]={-1,-1,1,1},dy1[4]={-1,1,-1,1};......
  • 清空回收站后,文件还能找回吗?
    面对回收站相关的数据恢复时,大家往往会有一些疑问,比如文件删除后,都会在回收站吗?在回收站里删除的文件还能找回吗?回收站恢复的是哪个盘文件?今天,为大家解答。一、文件删除后,都会在回收站吗?不一定!情况下,删除的文件都会在回收站内,但是如果出现以下情况,文件是不出现在回收站的。......
  • linux使用回收站功能
    1、安装工具https://github.com/andreafrancia/trash-cliunziptrash-cli-0.24.5.26.zipcdtrash-cli-0.24.5.26python3setup.pyinstallTraceback(mostrecentcalllast):File"setup.py",line4,in<module>setup()File"/usr/lib/py......
  • 风水大师裴翁风水之办公室风水-选址
    环境对人的影响是无所不在的,管造好风水水就是创造生财的利器,办公室是生财的重地,想要财运兴旺、生意兴隆,就得找个好环境、好风水的办公地点。本章节就从办公室环境风水开始谈起,教您如何选个好风水的地址,做到因地敏运,为公司抢得先机,进而使企业经营成功,一个公司的兴衰成败取决于经......
  • 让 Linux 拥有回收站:轻松找回误删文件的完美解决方案
    文章目录让Linux拥有回收站:轻松找回误删文件的完美解决方案方案设计编写`trash`脚本定期清理回收站总结辛苦您也关注下公众号,感谢!让Linux拥有回收站:轻松找回误删文件的完美解决方案在Linux系统中,使用rm命令删除文件后,文件通常会被直接从系统中移除,难以恢复。为了避......
  • 7 款最佳软件,可恢复从回收站中删除的文件
    您是否曾经从回收站中删除了文件并想要恢复它们?这似乎是不可能的。但是,从技术上讲,永久删除的文件不会从您的硬盘驱动器存储中删除,而是更改为无法识别的数据并被您的新文件覆盖。这使您能够从系统中恢复永久删除的文件。例如,您可以从文件历史记录备份中恢复已删除的文件。在......
  • 基于模拟退火算法求解物流选址问题(附word文档)
    基于模拟退火算法求解物流选址问题(附word文档)......
  • 非线性规划的经典例题--选址问题
    本章会介绍如何利用非线性规划解决选址问题,这个问题是文章线性规划在数学建模中的两道例题中第二道投料问题的第二小题,本章为基于这道题的基础上进行介绍,建议读者返回去看一看目录一、问题提出二、问题分析三、模型建立四、代码实现1.输入目标函数2.输入线性约束一、问题提出......
  • 基于粒子群优化算法的p-Hub选址优化(Matlab代码实现)
    目录1概述2运行结果2.1算例12.2算例2 2.3算例33参考文献4Matlab代码及详细文章1概述位置一分配问题起源于美国民用航空局(CAB),其航空公司航线的结构为轴辐系统(Hub-and-Spoke),以某一个主要的机场为轴(Hub),众多由此辐射而出的航线为辐(Spoke),在中枢的主......