随笔分类 - 数据结构
摘要:Souvenirs 题目大意 给出 $n$ 以及一个长为 $n$ 的序列 $a$。 给出 $m$,接下来 $m$ 组询问。 每组询问给出一个 $l,r$,你需要求出,对于 $i,j \in [l,r]$,且满足 $i \neq j$,$|a_i-a_j|$ 的最小值。 $1 \leq n \leq
阅读全文
摘要:Pudding Monsters 题目大意 给定一个 $n \times n$ 的棋盘,其中有 $n$ 个棋子,每行每列恰好有一个棋子。 求有多少个 $k \times k$ 的子棋盘中恰好有 $k$ 个棋子。 $n \le 3 \times 10^5$。 分析 经典题目。 我们将二维问题变成一维的
阅读全文
摘要:F. Closest Pair 题目大意 给定 $n(2 \le n \le 3\times 10^5)$ 个二元组 $(x_i,w_i)$,其中 $|x_i|\le 10^9$,$1\le w_i \le 10^9$。 输入中二元组按照 $x_i$ 严格递增排序给出。 给出 $q(1\le q \
阅读全文
摘要:F. Easy Fix 题目大意 给定一个排序p。定义A[i]为[1,i-1]中小于p[i]的数,B[i]是[i+1,n]中小于p[i]的数。 定义整个排列的贡献为$\sum_{i=1}^{n}min(A[i],B[i])$。 现在给出m次操作,每次操作,给出x,y交换排列中p[x],p[y],每次
阅读全文
摘要:Legacy 分析 模板题 利用线段树完成优化建图。 如果按照题目的要求去建边,我们直接的不论是时间还是空间都炸了,$O(n^2)$。 我们看到其中的第一二个操作都是从某个单点向区间连边。 这种区间操作,我们考虑一下,能否利用,每一个区间都可以表示为线段树上logn个区间来减少边的个数。 我们就拿2
阅读全文
摘要:P6242 【模板】线段树 3 分析 一看到要求,历史最大值。我们就要来看看操作,看看能不能将所有操作化成一个操作。这样就好操作一些。 总共两个操作,区间加,区间取min。 区间加好说,我们来看看如何解决区间取min操作。 我们其实无法做到快速的去区间取min,暴力的去求,我们只能递归到叶节点才能更
阅读全文
摘要:P4062 [Code+#1]Yazid 的新生舞会 分析 这个题目还是很有意思的,我们来一步步分析一下。 首先,我们来定一下我们的解题方向。涉及到众数,我们一般是考虑从每一个数字去考虑。 我们算的是满足某一个数字 在该区间为众数 且在该区间该数字的数量$>\frac{r-l+1}{2}$ 条件的区
阅读全文
摘要:G. Mass Change Queries 分析 我们考虑,如果我们建100颗线段树,那么如何完成将x对应的[l,r]对应的位置,与y对应的[l,r]对应的部分合并? 线段树合并。结束了。 记得特判一下x==y的情况。 AC_code #include<bits/stdc++.h> #define
阅读全文
摘要:G. Periodic RMQ Problem 题目大意 给你一个序列$a$ 让你支持 $1$ $l$ $r$ $x$ 区间赋值 $2$ $l$ $r$ 询问区间最小值 我们觉得这个问题太水了,所以我们不会给你序列$a$ 而是给你序列一个长度为$n$ 的序列$b$ ,把$b$ 复制粘贴$k$ 次就可
阅读全文
摘要:Codeforces Round #826 (Div. 3) E. Sending a Sequence Over the Network 题目大意 假设一个数组a=[1,2,3,4,5],将其分割为,[1],[2,3],[4,5,6],以此构建一个新数组,构建的原则是,分割的各部分的长度需要在该段
阅读全文
摘要:I inner World 题目大意 初始给定一排n个树,都只有根节点1,接下来有m次操作,每次给[l,r]的树中的u下子树增加一个节点v。然后是q次询问,每次询问[l,r]的树中u的子树大小之和。请注意,m次操作中每次添加的点都不同。 分析 我们首先关注黒题部分。我们自然可以想到,将m次操作看成是
阅读全文
摘要:Explorer 题目大意 给定一个n个点m条边的无向图。每个边拥有四个属性,u,v,l,r分别表示为连接u,v两点的一条边,其只能通过体型在[l,r]的人。问从1到n有多少体型可以通过。 分析 蛮有意思的一道题目。我尽量以我的视角来说明白这道题的思路。 我们考虑,最直接的思路。我们将从1到n的所有
阅读全文
摘要:CF718C Sasha and Array 题目大意 在本题中,我们用 $f_i$ 来表示第 $i$ 个斐波那契数($f_1=f_2=1,f_i=f_{i-1}+f_{i-2}(i\ge 3)$)。 给定一个 $n$ 个数的序列 $a$。有 $m$ 次操作,操作有两种: 将 $a_l\sim a_
阅读全文
摘要:C. Alyona and towers 题目大意 现在有$n$个数,$m$个操作,每次区间加一个数,对于每一次操作,你要找出最长的$\ a_l...a_r\ $,满足 $$\exists k! \in![l,r],a_l<a_{l+1}<a_{l+2}<...<a_k>a_{k+1}>a_{k+2
阅读全文
摘要:Codeforces Round #813 (Div. 2) D. Empty Graph 分析 我们通过简单的分析,可以得出一个结论,我们的答案一定来自于相邻两个点的位置或是最小值的两倍。 我们考虑如何给构造。 第一种 我们希望最终的最大值来自于u直接走到v,根据刚才的结论答案就是min(a[i]
阅读全文
摘要:CF522D Closest Equals 题目大意 现在有一个序列 $a_1, a_2, ..., a_n$ ,还有$m$个查询 $l_j, r_j$ $(1 ≤ l_j ≤ r_j ≤n)$ 。对于每一个查询,请找出距离最近的两个元素 $a_x$ 和 $a_y$$ (x ≠ y)$ ,并且满足以
阅读全文
摘要:CF594D REQ 题目大意 给定序列$a_1,a_2,a_3,...,a_n$,有$q$个询问,每次给定$l,r$,询问$\varphi\left(\prod\limits_{i=l}^ra_i\right)$。对 $ 10^{9}+7 $ 取模。 $n,q<=2*10^5,a_i<=10^6$
阅读全文
摘要:Codeforces Round #814 (Div. 2) D2. Burenka and Traditions (hard version) 题目大意 给你一个长度为n的数组,每次选一个区间[l,r],把他们都异或上同一个数x,时间代价为(r-l+1)/2,问把数组全变成0的最低花费时间是多少。
阅读全文
摘要:堆 模拟堆 目的 插入一个数x 输出当前集合中的最小值 删除当前集合的最小值 删除第k个插入的数 修改第k个插入的数,将其变为x 实现 struct modheap { int h[N],ph[N],hp[N],idx=0,len=0; void heap_swap(int a,int b) { s
阅读全文
摘要:CF446C DZY Loves Fibonacci Numbers 题目大意 在本题中,我们用 $f_i$ 来表示第 $i$ 个斐波那契数($f_1=f_2=1,f_i=f_{i-1}+f_{i-2}(i\ge 3)$)。 维护一个序列 $a$,长度为 $n$,有 $m$ 次操作: 1 l r:对
阅读全文

浙公网安备 33010602011771号