随笔分类 -  数据结构

数据结构
摘要:[NOIP 2024 模拟12]序列 题意 给出长度为 n 的序列 a,每次操作给出 l,r,k,把 [l,r] 进行 k 次循环位移。 每次操作结束后查询整个序列是否存在三元上升子序列,即是否存在 i<j<k,ai<aj<ak。 思路 区间循环 阅读全文
posted @ 2024-11-12 21:46 maniubi 阅读(18) 评论(0) 推荐(0) 编辑
摘要:Educational Codeforces Round 80 (CF1288) A. Deadline 题意 给出正整数 n,d,求不等式 x+dx+1n 是否有非负整数解。 思路 先不考虑上取整, \[x+ \frac{d}{ 阅读全文
posted @ 2024-11-11 22:50 maniubi 阅读(3) 评论(0) 推荐(0) 编辑
摘要:区间推平,区间查询循环节 题意 给定一个字符串 s , 请你支持两种操作: 1,l,r,c:将 [l,r] 之间的字符改为 c2,l,r,d:询问 [l,r] 之间是否有长度为 d 的循环节,有输出 YES,否则输出 NO。 思 阅读全文
posted @ 2024-10-30 19:13 maniubi 阅读(5) 评论(0) 推荐(0) 编辑
摘要:观景房 题意 给出若干个矩形,所有矩形组合形成的图形包含了若干条水平线。 你可以选出若干条水平线,必须满足高度先上升后下降,求选出的水平线长度和的最大值。 思路 先考虑如何求出所有水平线的高度和长度,观察下面的图片。 每个位置的水平高度就是覆盖这个位置的矩形高度最大值。 我们就需要一个数据结构支持以 阅读全文
posted @ 2024-10-16 21:48 maniubi 阅读(3) 评论(0) 推荐(0) 编辑
摘要:移动 题意 有一个 n×m 的网格图,有 k 个点不能走。 每次移动可以向右或向下走,只能走两次。 求能走到的点的个数。 思路 可以发现只能是从第一排向下走或从第一列向右走。 统计上下走能到的点和左右走能到的点,减去重复的即可。 扫描 x,使用线段树维护 \(y\ 阅读全文
posted @ 2024-09-29 19:16 maniubi 阅读(7) 评论(0) 推荐(0) 编辑
摘要:楼房重建 题意 小 A 在平面上 (0,0) 点的位置,第 i 栋楼房可以用一条连接 (i,0)(i,Hi) 的线段表示,其中 Hi 为第 i 栋楼房的高度。如果这栋楼房上任何一个高度大于 0 的点与 (0,0) 的连线没有与 阅读全文
posted @ 2024-09-29 19:15 maniubi 阅读(5) 评论(0) 推荐(0) 编辑
摘要:[HNOI2009] 梦幻布丁 题意 给出一个序列 a,有 q 次操作,每次修改把序列中一种数全部改为另一种数。 每次询问,查询序列 a 的颜色段个数。 思路 颜色段只有同一种颜色才有贡献,我们考虑每种颜色开一棵平衡树维护。 每种颜色维护其在原序列中的下标,下标连续的一段区间 阅读全文
posted @ 2024-09-29 19:15 maniubi 阅读(6) 评论(0) 推荐(0) 编辑
摘要:[2023四校联考3]sakuya 题意 给出一棵 n 个点的树,有 m 个特殊点 a,求将 a 随机打乱后 i=2md(ai1,ai)mod998244353的期望。有 q 次修改,每次将一个点连接的所有边权值增 阅读全文
posted @ 2024-09-27 08:49 maniubi 阅读(9) 评论(0) 推荐(0) 编辑
摘要:[COCI2015-2016#2] VUDU 题意 求一个序列中有多少个子段平均数大于 P。 思路 区间和相关的问题可以考虑前缀和。 对于原序列前缀和序列 a,询问等价于求数对 (l,r)(lr) 的个数,满足: \[\frac{a_r - a_{l-1}}{r-l+ 阅读全文
posted @ 2024-09-24 20:36 maniubi 阅读(5) 评论(0) 推荐(0) 编辑
摘要:Atcoder Beginner Contest 372 A - delete . 模拟即可。 #include <bits/stdc++.h> using namespace std; using ll = long long; void solve() { char ch; while (cin 阅读全文
posted @ 2024-09-21 22:32 maniubi 阅读(236) 评论(0) 推荐(0) 编辑
摘要:[NOIP 2024 模拟2]矩阵学说 题意 给出 nm 列的矩阵,第 i 行第 j 列的元素为 ai,j,找出满足以下条件的三元组 (i,j,x) 的 数量: 1in, 1jm, \(1 ≤ 阅读全文
posted @ 2024-09-12 19:55 maniubi 阅读(6) 评论(0) 推荐(0) 编辑
摘要:洛谷 P9912 Zatopljenje 题意 给出长度为 n 的序列 a,有 q 次询问。 每次给出 l,r,x,询问区间 [l,r] 中有多少段极长的,a 都大于 x 的段。 思路 离线后扫描线。 先把询问和 a 离散化,然后扫描 阅读全文
posted @ 2024-09-04 19:51 maniubi 阅读(3) 评论(0) 推荐(0) 编辑
摘要:洛谷 P5618 堵塞的交通 题意 有一个 2×C 的网格图,需要维护 3 种操作。 连接相邻的两个格子。 将相邻的两个格子断开连接。 询问两个格子是否联通。 思路1 考虑分块。 连边时块内使用并查集维护,块与块之间用数组标记。 删边块内的边时暴力重构并查集,块之间的边清 阅读全文
posted @ 2024-09-04 19:16 maniubi 阅读(7) 评论(0) 推荐(0) 编辑
摘要:洛谷 P3224 永无乡 题意 给出 n 个点。有两种操作: 在点 x 和点 y 之间连一条边。 询问与 x 联通的点中点权第 k 小的点。 思路 使用并查集维护连通性。每个联通块用一棵平衡树维护点权,合并时启发式合并。 时间复杂度:\(O(n \log^2n 阅读全文
posted @ 2024-09-03 07:41 maniubi 阅读(8) 评论(0) 推荐(0) 编辑
摘要:Atcoder Beginner Contest 369 C-Count Arithmetic Subarrays 题意 给出一个长度为 n 的序列 A,求有多少个 A 的连续子序列为等差数列。 思路 对于递增的右端点,左端点不减。 使用双指针,枚举右端点,扫描左端点。 时间 阅读全文
posted @ 2024-09-01 08:20 maniubi 阅读(198) 评论(0) 推荐(0) 编辑
摘要:洛谷 P11012 颜料 题意 给出长度为 n 的序列 a。定义一段区间 [l,r] 的绚丽程度 Xl,ri=1Wj=i+1Wmin(ci,cj),其中 W 是值域,ci 表示 a 阅读全文
posted @ 2024-08-31 13:56 maniubi 阅读(17) 评论(0) 推荐(0) 编辑
摘要:边权树链剖分 一般的树链剖分都是维护的点权,而如果要维护边权怎么办呢? 思路 我们可以把边权转换为点权。一个点有很多个儿子,但只有一个父亲。如果一个节点的点权记录到其儿子的边权就显然不行了,只能记录这个点到其父亲的边权。 如果要修改查询 x y 的所有边权,通过维护点权的思路,先修 阅读全文
posted @ 2022-12-15 21:35 maniubi 阅读(81) 评论(0) 推荐(0) 编辑
摘要:树链剖分学习笔记 简介 树链剖分是一种可以把树丢到线段树上维护的一种算法,时间复杂度为 O(nlog2n)。 思路 一、一些概念 1.重儿子:如果一个点有儿子,那么所有儿子中儿子最多的一个儿子就是这个点的重儿子。有点绕,可以看图理解。图中标红的点就是重儿子。 2.轻儿子:不是重儿子的点就 阅读全文
posted @ 2022-12-10 22:54 maniubi 阅读(17) 评论(0) 推荐(0) 编辑
摘要:[SCOI2014]方伯伯的玉米田 题目描述 方伯伯在自己的农田边散步,他突然发现田里的一排玉米非常的不美。这排玉米一共有 N 株,它们的高度参差不齐。方伯伯认为单调不下降序列很美,所以他决定先把一些玉米拔高,再把破坏美感的玉米拔除掉,使得剩下的玉米的高度构成一个单调不下降序列。方伯伯可以选择一 阅读全文
posted @ 2022-12-03 17:45 maniubi 阅读(53) 评论(0) 推荐(0) 编辑
摘要:树状数组学习笔记 简介 树状数组是一个可以在 O(logn) 的时间复杂度内支持单点修改和查询前缀和的操作的数据结构。 原理 观察发现线段树中有很多的冗余的部分。 红色部分为冗余部分。 把冗余部分去掉。 把每个节点编个号。 把每个节点的子节点个数和父结点编号列表出来。 | 1 | 2 | 3 阅读全文
posted @ 2022-12-03 16:50 maniubi 阅读(25) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示