随笔分类 - 数据结构
摘要:题目链接 题目大意:求序列内长度在$[L,R]$范围内前$k$大子序列之和。 考略每个左端点$i$,合法的区间右端点在$[i+L,i+R]$内。 不妨暴力枚举所有左端点,找到以其为左端点满足条件的最大子序列。 用贪心的思想,这些序列一定是满足题意的。统计后将该序列删除。 但这样直接删除肯定会丢失一部
阅读全文
摘要:单调队列是一种特殊的双端队列,其满足单调性,即内部元素单调递增或单调递减。单调队列可以用数组模拟,也可以用$STL$中的$deque$实现。 例题 最大子序和 给定一个长度为$N$的整数序列,从中找出一段长度不超过$M$的连续子序列,使得子序列中所有数的和最大。 $N,M\leq 3*10^5$。
阅读全文
摘要:考虑三种情况: 1.从左端点开始,是否要跨越。 2.从右端点开始,是否要跨越。 3.从中间开始,向两边延伸。 代码: void pushup(int index) { tree[index].s=tree[index*2].s+tree[index*2+1].s; tree[index].ls=ma
阅读全文
摘要:前言:T3写挂了,有点难受。 T1 中位数 题意简述:给你一段长度为$n$的序列,分别输出$[1,2k-1]$的中位数$(2k-1\leq n)$。 其实正解是用两个堆分别为大根堆和小根堆。但我这里偷了个懒,直接由STL函数upper_bound二分查找插入数字(STL大法好 Code: #incl
阅读全文
摘要:这次好不容易AK了一次(虽然题有点白给。有的题还是比较考验思路的。 T1 放棋子 给一个n*n的棋盘,有n个棋子。棋盘的副对角线不能放棋子(即$i+j=n+1$的位置)。每行每列只能摆一个棋子。每个棋子都视为是不同的。问有多少种摆法。 $n\leq 1314520$。答案对1e8+7取模。 典型的错
阅读全文
摘要:此篇笔记是我从自己的洛谷博客上搬运而来。更多的是偏向于做题的总结。 前言:简而言之,并查集是一种数据结构,带有一些限定条件,能够帮助计算机在很大的数据范围里很快得出结果。 此算法可以理解为”父亲“和”儿子“的关系。一个父亲可以有多个儿子,每个儿子只有一个父亲。 初始化:fa[i]=i。每个节点一开始
阅读全文

浙公网安备 33010602011771号