ccf寻宝!大冒险!python满分(敲开心~)

news2024/11/19 19:38:35

寻宝 大冒险

题目传送:http://118.190.20.162/view.page?gpid=T147

思路及代码:

核心点就是哈希。

之前刷的是70分,找不到之前的代码了,大概是建了一个很大的表,然后一点点比较吧。

今天再刷,上来就是哈希。

把每棵树的坐标(x,y)作为藏宝图的(0,0)位置,然后判断这棵树的位置满不满足条件。怎么判断呢?

先把藏宝图reverse一下,然后藏宝图中的每个坐标都加分别加上x,y。如果是1则判断绿化图中树的坐标中有没有它,没有就说明这个点不对,跳出循环。如果是0,但树中有它说明也对不上,跳出循环。另外一点就是,如果越界的话也不行,跳出循环。

那怎么查找?哈希表的查找时间复杂度是O(1)啊!

python里集合也是哈希表!(集合不能通过索引访问)

代码:

n, L, S = map(int, input().split())
trees = set()
for i in range(n):
    x, y = map(int, input().split())
    trees.add((x, y))
graph = []
for i in range(S+1):
    graph.append(list(map(int, input().split())))
# 以每棵树为起始点(0,0)判断 这个位置是否是满足条件的点
graph.reverse()
ans = 0
for k in trees:
    x, y = k[0], k[1]
    flag = 1
    for j in range(S+1):
        for k in range(S+1):
            cur_x, cur_y = x + j, y + k
            if cur_x > L or cur_y > L:
                flag = 0
                break
            if graph[j][k] == 1 and (cur_x, cur_y) not in trees:
                    flag = 0
                    break
            elif graph[j][k] == 0 and (cur_x, cur_y) in trees:
                    flag = 0
                    break
    if flag:
        ans += 1
print(ans)

知识点巩固:

1.python中集合set和字典dict都是哈希表。只不过set只有key,dict是key-value键值对。(我之前一直认为只有key:value才是哈希表)

2.集合和字典都无法通过索引进行访问,但可以通过**for k in 集合/字典:**的形式遍历里面的元素。

3.python中列表、字典、元组、字符串和集合都是可迭代对象,可迭代对象就是可以通过for … in…的方式进行遍历。可以用collections.abc(3.8版本,之前的版本就是collections)里的Iterable来判断该对象是不是可迭代对象。
在这里插入图片描述

4.与之关联的,可迭代对象与迭代器的关系,什么是迭代器什么又是生成器呢?

可迭代对象是可直接作用于for循环的数据类型,一类是集合数据类型,如列表、元组、字符串、字典、集合等,一类是生成器。

迭代器(iterator)只能从前往后访问元素,有两个基本的方法是iter()和next()。前者是创建迭代器对象,后者是输出迭代器的下一个元素。其中,列表、元组、字符串、字典、集合都可以创建迭代器。需要注意的是,他们虽然是可迭代对象(iterable)但不是迭代器(iterator),可以通过iter()函数获得一个Iterator对象。
在这里插入图片描述
在python中使用yield函数被称为生成器。生成器是一个返回迭代器的函数,只能用于迭代操作,即生成器是迭代器的一种。在调用生成器的过程中,每次遇到yield时函数就会暂停并保存当前所有的运行信息,返回yield值,在下一次执行next()的时候从当前位置继续执行。因此,生成器的出现使得python模仿协同程序的概念能够实现。协同程序的概念就是函数可以暂停或者挂起,并且在需要的时候从程序离开的地方继续或重新开始。

5.python中的不可变数据类型,不允许变量的值发生变化,如果改变了变量的值,相当于是新建了一个对象;可变数据类型,允许变量的值发生变化,即如果对变量进行append、+=等这种操作后,只是改变了变量的值,而不会新建一个对象,变量引用的对象的地址也不会变化.

不可变:Number(数字(int float bool))、String(字符串)、Tuple(元组)。
可以变:Set(集合)、List(列表)、Dictionary(字典)。

6.无论是集合还是字典,列表都没法做key值,列表是不可哈希对象。疑问:什么是可哈希什么是不可哈希?可哈希要求这个对象在生存期内必须不可变。以列表举例,列表是可变的,里面的值变了之后地址没变,就相当与不同的key值映射到相同的value,显示是不符合哈希特性的。所以,可哈希的也就是不可变的数据类型,包括数字、字符串和元组。而可变数据类型集合、列表和字典都不是可哈希对象(没法作为key)。

7.集合里的元素怎么变啊?增加一个元素用add,增加多个元素用update,删除一定存在的元素用remove(否则会报错),删除不一定存在的元素用discard。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

安装ADDIS

网状meta分析,安装ADDIS 下载ADDIS、java 百度网盘下载地址: 链接:https://pan.baidu.com/s/15tqDxXUWZ2q3qOS2Fglvu 提取码:6fyw 配置java环境变量 双击系统变量中的Path 复制百度网盘下载后的jdk-11/bin的路径&#xff0c…

Apereo-cas 4.x反序列化漏洞复现

转载https://www.freebuf.com/vuls/226149.html 建议再查看https://xz.aliyun.com/t/7032#toc-7的 0x01 前言放假前看到很多文章对这个漏洞进行分析复现,又因为过年期间的特殊情况,实在是无聊至极,所以自己也来学习一下,顺便恶补一…

OceanBase-概述

文章目录背景产品家族分布式数据库社区版(当前为V4.0)企业版公有云总结核心功能适用场景工具体系迁移评估工具OMA迁移工具OMS开发工具ODC权限管理运维工具OCP生态产品图数据库时序数据库背景 前段时间学习了下tidb的体系架构,了解了其运行原…

vulhub中间件解析漏洞复现

vulhub中间件解析漏洞复现 🍉 shell 此环境来自vulhub工程: https://github.com/vulhub/vulhub 以下测试环境为ubuntu 20.04 🍉目录vulhub中间件解析漏洞复现Apache HTTPD 换行解析漏洞(CVE-2017-15715)漏洞原理及…

Redis--高级篇 D4 Redis分片集群

1、分片集群的结构 2、搭建分片集群 2.1 分片集群结构 分片集群需要的节点数量较多,这里我们搭建一个最小的分片集群,包含3个master节点,每个master包含一个slave节点,结构如下: 这里我们会在同一台虚拟机中开启6个r…

Java多态详解

前言 多态是同一个行为具有多个不同的表现形态或形式的能力 比如: 小阿giao,他是一名主播,同样也是一个人; 小阿giao是一个对象; 这个对象既有主播形态,也有人类形态; 即:一个对象…

醛基-PEG-纤维二糖 Cellobiose-CHO 纤维二糖-醛基

醛基-PEG-纤维二糖 Cellobiose-CHO 纤维二糖-醛基 羰基中的一个共价键跟氢原子相连而组成的一价原子团,叫做醛基,醛基结构简式是-CHO,醛基是亲水基团,因此有醛基的有机物(如乙醛等)有一定的水溶性。 中…

Unity有哪些适合拿来练手的游戏项目?

首先推荐一篇文章,其中涵盖海量Unity和C#的书籍、demo等海量干货。 文章链接:Unity 高级程序员应该具备怎样的能力?要怎样成长为 Unity 高级程序员? Unity有哪些适合练手的游戏项目?还是老规矩,全文无付费…

【软件STM32cubeIDE下STM32F4xx使用DMA+定时器+推PWM+点亮灯带WS2812相关-进阶(全数据流版)】

2TOC (1)前言 (1)起源 最近作了有关ws2812灯带的后续测试,这源于一个简单的问题。 如果用STM32F4点灯带,每个DMA数据流都用上,那么可以点亮多少条灯带? 实际情况更加复杂些&#x…

JAVA EE,一文彻底聊明白

关于JAVA EE的论述,JAVA EE和Spring的论述在第二、三章节。 目录 1.JAVA的发展史 2.JAVA EE 3.JAVA EE和Spring 1.JAVA的发展史 JAVA语言于1995年面世,主要开发者为——James Gosline,后被称为JAVA语言之父。最早该语言叫Oak,…

写给Java应用开发看的Elasticsearch调优手册

随着数据量的增长,MySQL在很多场景下,似乎已经无能为力了,所以有不少应用的数据从MySQL迁移到了Elasticsearch,我们的应用就在其中。由于开发时间紧张,所以仅仅只是了解了下Elasticsearch的基本知识,随便写…

[HDF5]如何使用CMake一起编译自己的代码和HDF5库

以一个实际项目来举例 目录 一.目录结构 二.CMakeLists.txt内容 三.执行CMakeLists命令 一.目录结构 1.build放CMake执行后生成的所有的内容,包括最后的工程或可执行文件等; 2.include放工程的头文件,以及HDF5的头文件,可以直接把HDF5中…

顶象业务安全情报——企业一眼“看透”黑灰产

不可否认,随着互联网的发展,黑灰产们也变得越来越“聪明”。它们不仅熟悉业务流程以及防护逻辑,并且能够熟练运用自动化、智能化的新兴技术实施攻击或诈骗行为,且极难识别。对购物、金融、社交、出行、教育、游戏等行业造成极大业…

3 个月前被裁员了,心情跌落谷底,直到我看到了这本神书…

3个月前的某一天,正在愉快的打工,突然被喊去谈话,然后就被辞退了。。 加入了找工作的大军 然而,因为疫情,因为大专学历的我,找工作比以往都艰难了许多 很多,纯粹就是因为学历,都不…

你想知道刷题的秘密吗?一篇博客让你明白什么是OJ题,如何刷OJ题,并深入浅出的带你刷遍顺序表的OJ题(小白必看)

目录 0.前言 1.什么是OJ 1.1 OJ简述 1.2 OJ的分类(尤其接口型OJ,带你剖析得明明白白) 1.3 接口型OJ的输入型参数 2. 剑指 Offer 56 - I. 数组中数字出现的次数 3. 88. 合并两个有序数组 4. 27.移除元素 5. 26. 删除有序数组中的重复…

Linux系统配置JDK环境变量

1、下载 1.1、Oracle官方下载地址:https://www.oracle.com/cn/java/technologies/downloads/#java8 1.2、同意协议,并点击Download 1.3、账号密码登录,没有可以创建一个 1.4、登录成功后就直接下载了 2、配置 2.1、下载好的压缩包上传到Lin…

FreeRTOS第一个任务的创建和调度详解(SVC异常)

在上一篇文章中,我详细分析了FreeRTOS中上下文切换:基于Cortex-M的RTOS上下文切换详解及FreeRTOS实例 但是第一个任务没有上下文,它是怎么运行的呢? 1 创建任务 如果我们没有创建任务的话,系统也有一个空闲任务用来…

【 java 集合】使用迭代器 Iterator 遍历集合

📋 个人简介 💖 作者简介:大家好,我是阿牛,全栈领域优质创作者。😜📝 个人主页:馆主阿牛🔥🎉 支持我:点赞👍收藏⭐️留言&#x1f4d…

空气源热泵设备远程监控的优点

空气源热泵热水器是一种节能、环保、安全的新能源产品,也是家庭采暖、生活热水及空调制冷等方面的最佳选择。 在使用时,只需一次少量的电能就能实现连续制热和制冷,其制热效率是燃气热水器、电热水瓶和燃油热车等供热设备的数倍,因…

亿联会议系统操作使用全教程

环境: 终端VC800 亿联会议pc.v4.2.11 教程: 一、下载安装亿联会议PC/手机APP 官网下载 1.以下教程为Windows版演示 2.安装亿联会议软件(具体操作按软件提示步骤进行) 3.注册账号 3.1点击免费注册按钮,自动跳转至…