3.15数据结构考试总结

news/2025/3/16 19:40:06/文章来源:https://www.cnblogs.com/storms11/p/18775477

T1

一直以为比较简单,所以在赛时思考了很久。异或肯定是tire树,但是按位或和按位与不好直接用,时间复杂度是假的(真实情况下暴力也能过)。然后看都了值域范围数值只能取到 \(2^{16}\) 所以觉得做法一定与值域有关,不让肯定会开到 \(1e9\) 。然后就想到是否可以对每种值开个数组存下答案,但是也时间爆炸了。后面就写别的题去了。
正解其实不远,考虑可以通过折半来优化自己的时间复杂度,考虑刚才的做法在插入是 \(2^{16}\) 的复杂度,但查询是 \(O(1)\),所以,应该均摊时间。考虑插入时只存前8位的答案。在查询时只暴力枚举后八位,总复杂度就变成乘 \(2^8\)

T2

开题的第一遍,没有直接想到做法但觉得这道题应该比较简单,所以在思考t1无果之后就开始想t2,发现在排序后插入,就变成了链覆盖的问题,直接做即可。也可以在线用合并。写题的速度有点慢,还被字符串排序卡了一些,平时的积累不太够。

T3

最板的一道题。在第一眼发现是维护直线的同时求单点的最值,就知道了是李超树。没什么底气写,感觉自己可能不太清楚实现了。就最后来写它还先写了暴力。最后可能就剩20分钟的样子,在写完了基本实现之后被插入的时候的分讨卡住了,最后也没写过。下午先复习了一下,发现自己上一次没有深入理解它的标记永久化以及分讨。下午改了出来,还学了一下它的拓展广义李超树,比较有启发性,感觉是决策单调性的dp的可能的一种通解。

考试总结

这次没有挂分,是自己打了的都得到了分。比起上一次挂大分的树链剖分这一次也没什么失误的写了出来。但是还是对于一些比较常用的算法不熟。
计划学数学的同时将线段树的博客总结完。感觉它非常的重要。

数据结构总结

这几周主要就是深入学了考察较多同时性价比比较高的算法,大概一周多的分块,半周的扫描线(历史和还不会)然后半周的平衡树,以及剩下的时间用在可持久化,cdq分治,点分治,树链剖分。对于单侧递归,KDT以及树套树是没怎么花时间的。可能会在后面穿插着尝试一下。
对于以前没怎么掌握的以点分治为代表现在的实现能力已经提高了,但是对于遇到数据结构的题的总体思路还没不清晰,可能需要后面在来梳理总结。
数据结构的两场考试感觉更多在考察一些树形的数据结构上,没有考察到分块,cdq分治等,可能还不太确定自己在这方面的进步。但是明显对树形的掌握还是不够,模板都写不出来,速度和正确性都不站优。
然后对于学过的算法以及做过的题,还有一些blogs没有完工,这些可能每天晚上抽一点时间来写,然后补充到直接的数据结构的总框架的blog里。

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

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

相关文章

Visual Studio Code-设置展示多行TAB页

Visual Studio Code-设置展示多行TAB页 一、ctrl + shift + p -> 打开工作区设置(Open Workspace Settings 二、输入 ‘workbench.editor.wrapTabs’

Git-git生成SSH密钥

Git-git生成SSH密钥 一、生成 SSH 密钥 如果你还没有生成 SSH 密钥,可以使用以下命令生成新的 SSH 密钥对: 这里 -t rsa 指定密钥类型为 RSA,-b 4096 指定密钥长度为 4096 位,-C 添加一个注释,通常是你的电子邮件地址。 ssh-keygen -t rsa -b 4096 -C "your_email@ex…

鲜花:《一种基于错误的寻找重心方法的点分治的复杂度分析》注

原文:一种基于错误的寻找重心方法的点分治的复杂度分析 LCA 还是太神了,研究半天才看明白。 所以这里提供一种说人话版本。 为什么法一是错的? 原文提出了这样一个 hack:这是三个等长度的共端点的链,初始以红色箭头所指的点为根。 进行第一次分治:红色箭头所指的点是重心…

SpringBoot的WebServlet的兼容

一.使用SpringBean注册JavaWeb的三大组件 在 Spring Boot 中,使用 @Bean 注册的 Servlet、Filter 和 Listener 组件会被加载到 Servlet 容器 中管理,而不是直接由 Spring 容器管理。然而,Spring Boot 提供了一些机制来确保这些组件能够与 Spring 容器无缝集成。Servlet 容器…

第二章课上练习

TempConvert.py TempStr = input("请输入带有符号的温度值:") if TempStr[-1] in [F,f]: C = (eval(TempStr[0:-1]) - 32)/1.8 print("转换后的温度是{:.2f}C".format(C)) elif TempStr[-1] in [C,c]: F = 1.8*eval(TempStr[0:-1])+32 print("转换后…

叠加等边三角形

import turtle 设置画布和画笔 screen = turtle.Screen() screen.bgcolor("white") # 设置背景颜色 pen = turtle.Turtle() pen.shape("turtle") # 设置画笔形状为小乌龟 pen.color("blue") # 设置画笔颜色 pen.pensize(2) # 设置画笔…

Citia Composer2024软件下载与安装教程

CATIA是法国达索公司的产品开发旗舰解决方案。作为PLM协同解决方案的一个重要组成部分,CATIA软件具有以下主要功能和应用领域:‌设计‌:提供从概念设计到最终产品形成的完整设计能力,支持2D、3D、参数化混合建模及数据管理‌3。 ‌分析‌:进行产品分析和仿真,确保设计的可…

Peach-Printer2.0 Web 打印服务解决方案

Peach-Printer1.0在沉寂许久后迎来了一个使用客户,非常感谢客户的支持和理解。 通过客户的使用反馈本人尝试对1.0版本进行完善修改,但始终打印效果未能实现预期。思索许久后决心更改打印控件的底层框架,重新设计打印组件。通过一段时间的摸索与研究终于在3月11日推出了第一个…

老八股谈事务处理,到底在谈什么?

hello, 我是马甲哥, 这是我的第184篇原创技术文章, 也是周志明的软件架构课的读书笔记。 1. 事务处理的目标:数据状态的一致性 当我们谈事务处理,就是在谈确保数据状态的一致性Consistency。 一致性: 确保数据是正确的,不同数据间不会产生矛盾 (这里的一致性与分布式共…