【CSP CCF记录】202206-2 寻宝!大冒险!

题目

 

 

过程

思路

1.绿化图坐标边界太大,不能直接用矩阵表示,可以用一个二维数组存储有树坐标的x,y值。

定义两个数组:绿化图arr[1005][2]、宝藏图数组b[55][55]

2.

依据条件,从绿化图中第一棵树的坐标开始区域遍历。统计绿化图与藏宝图中一一对应的树的棵数sum,在进行区域比对前,判断该区域树的数量是否等于sum,不等的话直接跳过该区域。

3.将绿化图中的每一棵树的坐标(x,y)作为(0,0)点,其它树的坐标(xx,yy)对应藏宝图中坐标(xx-x,yy-y)。

4.接着遍历藏宝图中每一个点,根据是否有树进行讨论判断。使用flag标记是否舍弃当前区域(1舍弃,0保留),分为以下三种情况讨论:

1.藏宝图范围超出绿化图范围,舍弃。

2.原宝藏图位置[j][k]没有树,从绿化图位置计算[j][k]有树,推测情况与真实情况不符,舍弃。

3.原宝藏图位置[j][k]有树,从绿化图位置计算[j][k]有树,推测情况与真实情况相符,保留;遍历完绿化图都没有找到树,舍弃。

参考:http://t.csdnimg.cn/wZw8m

代码

#include<bits/stdc++.h>
using namespace std;int arr[1005][2];   //记录树的坐标
int b[55][55];   //藏宝图矩阵 int main()
{int n,L,S;int sum=0;  //记录藏宝图中树的棵数 cin>>n>>L>>S;//输入树的坐标 for(int i=0;i<n;i++)  cin>>arr[i][0]>>arr[i][1];//输入藏宝图 for(int i=S;i>=0;i--){for(int j=0;j<=S;j++){cin>>b[i][j];    //注意先输入b[s][0]if(b[i][j]==1)  sum++;}}int num=0;   //符合的坐标数 for(int i=0;i<n;i++){int x=arr[i][0];int y=arr[i][1];int t=0;  //记录当前区域中树的棵树 for(int j=0;j<n;j++){int xx=arr[j][0];int yy=arr[j][1];//假设藏宝图在当前区域,统计当前区域中绿化图树与藏宝图中树一一对应棵数 //该预处理减少运行时间 if((xx-x>=0)&&(xx-x<=S)&&(yy-y>=0)&&(yy-y<=S)&&b[xx-x][yy-y]==1){t++;}}if(t==sum)   //只有当前区域树的数量等于藏宝图中树的数量才需要考虑 {int flag=0;   //标记位//遍历藏宝图的树木坐标看绿化图中是否有对应 for(int j=0;j<=S;j++){for(int k=0;k<=S;k++){if (x + j > L || y + k > L)   //藏宝图范围超出绿化图的范围{flag = 1;break;}if(b[j][k]==0)   //宝藏图[j][k]没有树{for(int m=0;m<n;m++){int xx=arr[m][0];int yy=arr[m][1];if(xx-x==j&&yy-y==k)    //从绿化图推测[j][k]有树,与真实宝藏图矛盾 {flag=1;break;}}}			else  //宝藏图[j][k]有树{for(int m=0;m<n;m++){int xx=arr[m][0];int yy=arr[m][1];if(xx-x==j&&yy-y==k)//从绿化图推测[j][k]有树 {break;}if(m==n-1)   //没有找到树 {flag=1;break;}}} if(flag==1)  break; }if(flag==1)  break;}if(flag==0){num++;} }}cout<<num;return 0;
}

结果

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

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

相关文章

Java进阶10 IO流

Java进阶10 IO流 IO流就是数据传输。I为input的缩写&#xff0c;表示输入读取&#xff1b;O为out的缩写&#xff0c;表示输出写出。 一、IO流体系结构 ♥巧记区分tips&#xff1a;以Stream结尾的是字节流&#xff1b;以Reader、Writer结尾的都是字符流 二、字节输出流FileOu…

免翻,剪映出品的AI作图和AI视频官网免费体验!

哈喽&#xff0c;各位小伙伴们好&#xff0c;我是给大家带来各类黑科技与前沿资讯的小武。 近日&#xff0c;据剪映 Dreamina 官方消息&#xff0c;Deramina正式更名为即梦&#xff0c;同时宣布其AI作图和AI视频生成功能已全量上线。 ▲ 官网主页面 AI作图 1、通过文字描述或…

Mysql与Java连接----JDBC

前言: 当将Java与MySQL数据库连接时&#xff0c;JDBC&#xff08;Java Database Connectivity&#xff09;是一种重要的技术。JDBC允许Java应用程序通过标准的数据库访问方式与不同的关系型数据库进行通信&#xff0c;其中包括MySQL。通过使用JDBC&#xff0c;Java开发人员可以…

n的阶乘(函数)(C语言)

一、运行结果&#xff1b; 二、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>//声明n的阶乘函数fac; int fac(int n);int main() {//初始化变量值&#xff1b;int n, result;//获取要阶乘的数&#xff1b;printf("请输入要阶乘的n&…

基于SSM的理发店会员管理系统的设计和实现(有报告)。Javaee项目。ssm项目。

演示视频&#xff1a; 基于SSM的理发店会员管理系统的设计和实现&#xff08;有报告&#xff09;。Javaee项目。ssm项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0…

Today At Apple 2024.04.22 Iphone 入门 Mac 办公高4个效技巧

官网&#xff1a; https://www.apple.com/today/Apple 亚洲第一大商店&#xff1a;Apple 静安零售店现已在上海开幕如下预约课程&#xff1a;下载 Apple Store&#xff08;不是app store&#xff09;&#xff0c;点击课程预约笔记&#xff1a;Today At Apple Notes果粉加群 &am…

鸿蒙ArkUI开发:常用布局【交叉轴】

交叉轴 垂直于主轴方向的轴线。Row容器交叉轴为纵向&#xff0c;Column容器交叉轴为横向。通过alignItems属性设置子元素在交叉轴&#xff08;排列方向的垂直方向&#xff09;上的对齐方式alignSelf属性用于控制单个子元素在容器交叉轴上的对齐方式&#xff0c;其优先级高于al…

亚马逊测评实操干货,跨境电商做测评,卖家店铺测评攻略!

亚马逊在全球有超过 2 亿付费 Prime 会员和数以亿计的活跃买家账户&#xff0c;卖家们可以通过亚马逊一流的国际物流扩展业务。这是一个知名度极高的老牌跨境电商平台&#xff0c;而且平台流量非常大&#xff0c;成功打造爆款Listing这是每位亚马逊卖家渴望的诉求&#xff0c;做…

外卖 点金推广实战课程,2024外卖 点金推广全流程(7节课+资料)

课程内容&#xff1a; 外卖点金推广实操课程 资料 01 1-了解外卖.mp4 02 第一节:点金推广的说明.mp4 03 第二节:如何降低点金推广的成本,mp4 04 第三节:如何计算点金推广的流速,mp4 05 第四节:如何提升点金的精准度,mp4 06 第五节:点金推广实操,mp4 07 点金推广高级教程…

0508GoodsContent的Maven项目

0508GoodsContent的Maven项目包-CSDN博客 数据库字段 页面需求

Electron学习笔记(三)

文章目录 相关笔记笔记说明 五、界面1、获取 webContents 实例&#xff08;1&#xff09;通过窗口对象的 webContent 属性获取 webContent 实例&#xff1a;&#xff08;2&#xff09;获取当前激活窗口的 webContents 实例&#xff1a;&#xff08;3&#xff09;在渲染进程中获…

kali更新镜像源

1. 什么是镜像源 镜像源一种数据存储和分发技术&#xff0c;通常指的是一个服务器或网站&#xff0c;它存储了另一个服务器或网站上的某些或全部内容的副本。 2. kali更新镜像源 1. 编辑镜像源文件 vi /etc/apt/sources.list 2. 将原来的镜像源用#号注释掉 3. 选择镜像源地址…