1 常用的数据结构 2 高级数据结构 3 排序 4 查找 5 深度与广度优先搜索 6 动态规划 7 设计模式 数据结构和算法 1 常用的数据结构 栈 数组、字符串 队列 链表 树 双端队列 2 高级数据结构 优先队列 图 前缀树 线段树 树状数组 3 排序 基本排序 冒泡排序 选择排序 插入排序 希 ...
分类:
编程语言 时间:
2019-11-16 10:48:43
阅读次数:
92
题意:给定三个序列abc,问最少操作几次使得满足a<b<c 题解:将三个序列合并起来,设cnt[i][1/2/3]表示前i个数有几个是来自序列1/2/3的。 枚举第一个序列要到i,此时对于第一个序列的操作次数就是cnt[i][2]+cnt[i][3]+cnt[n][1]-cnt[i][1] 对于第二 ...
分类:
其他好文 时间:
2019-11-15 12:14:26
阅读次数:
70
"传送门" 题意: 给出一颗以$1$为根的有根树,每个结点有个颜色$c_i$。 之后要回答$m$组询问,每组询问包含$v_i,k_i$,要回答以$v_i$为根的子树中,颜色出现次数不小于$k_i$的颜色的和。 思路: 这种静态子树上的问题,可以考虑dsu on tree。 由于要回答次数超过$k$的 ...
分类:
其他好文 时间:
2019-11-14 21:56:49
阅读次数:
71
树链剖分,考虑用线段树维护左端点颜色、右端点颜色和段数,合并时判断中间两个点能否重合即可,注意在树剖时合并的顺序 1 #include<bits/stdc++.h> 2 using namespace std; 3 #define N 100005 4 #define L (k<<1) 5 #def ...
分类:
其他好文 时间:
2019-11-14 12:33:54
阅读次数:
50
Educational Codeforces Round 76 (Rated for Div. 2) E. The Contest(dp+线段树) "题目链接" 题意:给定3个人互不相同的多个数字,可以把数字移动给别人,问最少移动几次后可以使第一个人的数字为1~m1,第二个人m1~m2,第三个人m2 ...
分类:
其他好文 时间:
2019-11-14 11:24:47
阅读次数:
56
" 题目传送门 " 奇妙的题目 把操作离线下来,二分第$q$位置上的数$x$,将排列中大于$x$的数记为$1$,小于$x$的数记为$0$,然后就可以很简单的用线段树维护每个操作 最后判断$q$位置上的数是否为$1$ 时间复杂度$O(n\log^2 n)$ ...
分类:
编程语言 时间:
2019-11-14 11:21:27
阅读次数:
70
前置技能:线段树、DFS 当我第一次听到 “树链剖分” 这个算法的时候,感觉它一定很高大上。现在看来,它确实很高大上,不过也十分的 暴力 (个人认为,不喜勿喷) 基本概念 树链剖分,计算机术语,指一种对树进行划分的算法,它先通过轻重边剖分将树分为多条链,保证每个点属于且只属于一条链,然后再通过数据结 ...
分类:
其他好文 时间:
2019-11-14 10:00:55
阅读次数:
80
引入 线段树和树状数组,是两个十分相似的数据结构。他们能使对一个区间的数修改以及查询的速度提升许多。两个结构本质相同,各有优缺点,今天我们来从单点修改,单点查询,区间修改,区间查询。 概念 线段树 线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶 ...
分类:
编程语言 时间:
2019-11-13 22:33:32
阅读次数:
96
题目链接: 一眼看过去就是ODT瞎搞,题解区一堆线段树巨长的emmm #include <bits/stdc++.h> using namespace std; #define ll long long #define re register #define pb push_back #define ...
分类:
其他好文 时间:
2019-11-13 22:22:29
阅读次数:
90
题目 "传送门" 思路 此题两个思路 卡着过 表面上看这是一道紫题,但是数据真的水 ~~用心造题,用脚造数据~~ 实际上桶排就能过 但是需要加一个 小优化 对于每次排序的区间 只需要从区间的最小值枚举到最大值就行了 代码 cpp include include include define lc o ...
分类:
编程语言 时间:
2019-11-12 21:51:18
阅读次数:
95