
数据结构
文章平均质量分 82
cheng__yu_
这个作者很懒,什么都没留下…
展开
-
线段树提升练习题
习题CF283E. Cow Tennis Tournament (正难则反 + 线段树维护异或)CF283E. Cow Tennis Tournament (正难则反 + 线段树维护异或)链接:https://codeforces.com/contest/283/problem/E题意:有 nnn 个能力值,能力值越大越强。有 mmm 个区间,每个区间代表能力值在 [a,b][a,b][a,b] 内的人的强弱关系翻转,区间外的人对区间内的人的强弱关系不变(没有传递关系)。问有多少个三元组 (p,q,r原创 2021-07-07 15:55:30 · 233 阅读 · 0 评论 -
线段树基础模板题
练习题HDU - 4027 Can you answer these queries? (同时维护单点更新 + 区间更新)POJ - 2528 D - Mayor’s posters (离散化 + 单点查询)HDU - 1540 Tunnel Warfare (求最大连续区间)HDU - 4027 Can you answer these queries? (同时维护单点更新 + 区间更新)题意:维护两种操作0 a b 代表将区间 [a,b][a,b][a,b] 内的数值,变为自己的平方根1 a原创 2021-07-07 14:43:14 · 370 阅读 · 0 评论 -
点分治习题
点分治点分治步骤P3806 【模板】点分治1点分治步骤每次找到一个重心,以重心为根开始分治。先 dfs1 拿前面的数据来更新答案,然后 dfs2 将当前子树的数据也更新上去。每次换一个重心的时候,都需要清空 cnt 数组。这些需要重新记录。P3806 【模板】点分治1链接:https://www.luogu.com.cn/problem/P3806题意:给定一棵有 nnn 个点的树, mmm 个询问,询问树上距离为 k 的点对是否存在思路:用 cnt 数组记录一下,当前 点 到根的距离。每原创 2020-10-05 18:31:21 · 336 阅读 · 0 评论 -
线段树合并
线段树合并P1456 Monkey KingP1456 Monkey King链接:https://www.luogu.com.cn/problem/P1456题意:给定 n 只猴子打 m 次架,每次询问两只猴子,选择它们所在集合中,战斗力最大的两只猴子,将它们的战斗力减半。输出这个减半之后的战斗力,然后将这两个集合合并。如果两只猴子已经在同一个集合,那么就输出 -1.思路:用并查集维护集合关系。然后用 动态开点权值线段树 + 线段树合并来维护操作。每次先查询 u 、v 是否在同一个集合。不在,原创 2020-10-05 16:06:56 · 360 阅读 · 0 评论 -
可持久化并查集、带删并查集
可持久化并查集P3402 可持久化并查集P3402 可持久化并查集链接:https://www.luogu.com.cn/problem/P3402题意:给定 n 个集合,第 i 个集合内初始状态下只有一个数,为 i。有 m 次操作。操作分为 3 种:1 a b 合并 a,b 所在集合2 k 回到第 k 次操作(执行三种操作中的任意一种都记为一次操作)之后的状态3 a b 询问 a,b 是否属于同一集合,如果是则输出 1 ,否则输出 0思路:可持久化并查集#include &原创 2020-09-29 11:27:35 · 1073 阅读 · 0 评论 -
可持久化 01Trie
01TrieP4551 最长异或路径 (01trie)P4551 最长异或路径 (01trie)链接:https://www.luogu.com.cn/problem/P4551题意:给定一棵 nnn 个点的带权树,结点下标从 1 开始到 n 。寻找树中找两个结点,求最长的异或路径。异或路径指的是指两个结点之间唯一路径上的所有边权的异或。思路: 01trie 模板题从高位开始贪心,每次枚举一个数字时,需要关心与它异或相反的位置。#include <bits/stdc++.h>#原创 2020-09-27 20:18:04 · 497 阅读 · 0 评论 -
字典树习题
字典树习题POJ - 2418 Hardwood SpeciesPOJ - 2418 Hardwood Species链接:http://poj.org/problem?id=2418题意:给定多个字符串,有些字符串相同,请你统计每种字符串的数量占所有字符串数量的百分比,按字典序输出思路直接拿map 记录一下,然后输出就好了也可以用 set + 字典树 写一下,也不用删除操作。#include <cstdio>#include <string>#include原创 2020-09-27 20:17:28 · 203 阅读 · 0 评论 -
可持久化数据结构
可持久化数据结构P3919 【模板】可持久化线段树 1(可持久化数组)P1383 高级打字机P3834 【模板】可持久化线段树 2(主席树)P3919 【模板】可持久化线段树 1(可持久化数组)链接:https://www.luogu.com.cn/problem/P3919题意:你需要维护这样的一个长度为 nnn 的数组,支持如下几种操作在某个历史版本上修改某一个位置上的值访问某个历史版本上的某一位置的值,并输出这个值#include <bits/stdc++.h>#defi原创 2020-09-26 19:15:41 · 181 阅读 · 1 评论 -
并查集
并查集练习题238. 银河英雄传说练习题238. 银河英雄传说链接:https://www.acwing.com/problem/content/240/题意:完成两个指令:M i j 表示将第 i 个人所在的队列合并到第 j 个人所在队列的末尾C i j 表示查询第 i 个人和第 j 个人是否在同一个队列中,并询问他们之间差了多少人#include <bits/stdc++.h>#define ll long longusing namespace std;const int原创 2020-09-06 14:40:42 · 161 阅读 · 0 评论 -
分块练习题
243. 一个简单的整数问题2链接:https://www.acwing.com/problem/content/244/题意:维护区间修改,维护区间查询思路:分块维护#include <bits/stdc++.h>#define ll long longusing namespace std;const int maxn=1e5+10;int n,m,B,a[maxn]; ll res[maxn],base[maxn];ll query(int l,int r){原创 2020-08-21 15:43:35 · 341 阅读 · 0 评论 -
莫队算法习题
莫队算法将一个区间询问变成了插入删除操作。分成 n\sqrt nn 块之后,遍历每个操作,可以发现块内 lll 的排序时任意的,最多跑 n\sqrt nn,一共 n 个询问,复杂度为 nnn\sqrt nnn ,rrr 是递增的最多跑 O(n)O(n)O(n) 一共 n\sqrt nn 块,复杂度也是 nnn\sqrt nnn。P1972 [SDOI2009]HH的项链链接:https://www.luogu.com.cn/problem/P1972题意:给定一个序列 n ,给定 m 个原创 2020-07-07 18:25:17 · 323 阅读 · 0 评论 -
单调栈习题
单调栈习题I. Max answer 2019南昌邀请赛网络赛I. Max answer 2019南昌邀请赛网络赛链接:https://www.jisuanke.com/contest/2290/challenges题意:给定一个长度为 n 的序列,让你选择一个区间使得区间最小值和区间和的乘积最大,问这个最大乘积是多少思路:枚举每个点为最小值,用单调栈搜出左右两边都大于 a[i]a[i]a[i] 的范围 [li,ri][l_i,r_i][li,ri] ,然后讨论 a 的正负性。ai>0原创 2020-07-01 18:11:14 · 186 阅读 · 0 评论