上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 15 下一页
摘要: WTP 的大洗牌 题目描述 \(\text{input1}\) 3 1 1 1 1 2 3 \(\text{output1}\) 10 0 数据范围 shuffle.zip 第一题 题目描述 输入格式 输出格式 \(\text{input1}\) abyzuv 1 \(\text{output1}\ 阅读全文
posted @ 2024-07-18 07:55 So_noSlack 阅读(103) 评论(0) 推荐(0)
摘要: 动态规划基础 主要介绍动态规划的基本思想,以及动态规划中状态及状态转移方程的设计思路,帮助各位初学者对动态规划有一个初步的了解。 引入 [IOI1994] 数字三角形。 给定一个 \(r\) 行的数字三角形(\(r \leq 1000\)),需要找到一条从最高点到底部任意处结束的路径,使路径经过数字 阅读全文
posted @ 2024-07-17 08:40 So_noSlack 阅读(139) 评论(0) 推荐(0)
摘要: 线段树 引入 线段树是算法竞赛中常用的用来维护 区间信息 的数据结构。 线段树可以在 \(O(\log N)\) 的时间复杂度内实现单点修改、区间修改、区间查询(区间求和,求区间最大值,求区间最小值)等操作。 线段树 线段树的基本结构与建树 过程 线段树将每个长度不为 \(1\) 的区间划分成左右两 阅读全文
posted @ 2024-07-16 08:36 So_noSlack 阅读(134) 评论(0) 推荐(0)
摘要: 并查集 引入 并查集是一种用于管理元素所属集合的数据结构,实现为一个森林,其中每棵树表示一个集合,树中的节点表示对应集合中的元素。 顾名思义,并查集支持两种操作: 合并(\(\text{Union}\)):合并两个元素所属集合(合并对应的树) 查询(\(\text{Find}\)):查询某个元素所属 阅读全文
posted @ 2024-07-15 08:32 So_noSlack 阅读(164) 评论(0) 推荐(0)
摘要: 字符串哈希 定义 我们定义一个把字符串映射到整数的函数 \(f\),这个 \(f\) 称为是 \(\text{Hash}\) 函数。 我们希望这个函数 \(f\) 可以方便地帮我们判断两个字符串是否相等。 Hash 的思想 \(\text{Hash}\) 的核心思想在于,将输入映射到一个值域较小、可 阅读全文
posted @ 2024-07-14 07:59 So_noSlack 阅读(122) 评论(0) 推荐(0)
摘要: 双指针 本页面将简要介绍双指针。 引入 双指针是一种简单而又灵活的技巧和思想,单独使用可以轻松解决一些特定问题,和其他算法结合也能发挥多样的用处。 双指针顾名思义,就是同时使用两个指针,在序列、链表结构上指向的是位置,在树、图结构中指向的是节点,通过或同向移动,或相向移动来维护、统计信息。 接下来我 阅读全文
posted @ 2024-07-12 08:10 So_noSlack 阅读(128) 评论(0) 推荐(0)
摘要: 启发式搜索 下面将简要介绍启发式搜索及其用法。 定义 启发式搜索(英文:\(\text{heuristic search}\))是一种在普通搜索算法的基础上引入了启发式函数的搜索算法。 启发式函数的作用是基于已有的信息对搜索的每一个分支选择都做估价,进而选择分支。简单来说,启发式搜索就是对取和不取都 阅读全文
posted @ 2024-07-11 11:04 So_noSlack 阅读(205) 评论(0) 推荐(0)
摘要: 单调栈 引入 何为单调栈?顾名思义,单调栈即满足单调性的栈结构。与单调队列相比,其只在一端进行进出。 为了描述方便,以下举例及伪代码以维护一个整数的单调递增栈为例。 过程 插入 将一个元素插入单调栈时,为了维护栈的单调性,需要在保证将该元素插入到栈顶后整个栈满足单调性的前提下弹出最少的元素。 例如, 阅读全文
posted @ 2024-07-10 07:31 So_noSlack 阅读(149) 评论(0) 推荐(0)
摘要: 分治的延伸应用 应用场景 优化合并 假设将两个规模 \(\frac{n}{2}\) 的信息合并为 \(n\) 的时间复杂度为 \(f(n)\),用主定理分析时间复杂度 \(T(n) = 2 \times T(\frac{n}{2}) + f(n)\)。 能直观的看出优化程度还是很大的。 归并排序中 阅读全文
posted @ 2024-07-09 08:25 So_noSlack 阅读(201) 评论(0) 推荐(1)
摘要: 整数二分 我们可以做到每次排除一半的答案,时间复杂度 \(O(\log n)\)。 long long l = L, r = R; while(l <= r) { long long mid = (l + r) >> 1; if(mid > x) r = mid - 1; else l = mid 阅读全文
posted @ 2024-07-08 13:42 So_noSlack 阅读(219) 评论(0) 推荐(0)
上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 15 下一页