数据结构
文章平均质量分 65
鬼沐冢
总会突然想起喵喵
展开
-
牛客练习赛7 - E(树状数组+离散化)
链接: 题目描述 珂朵莉给了你一个序列,有个子区间,求出她们各自的逆序对个数,然后加起来输出 输入描述: 第一行一个数 n 表示这个序列 a 的长度之后一行 n 个数,第i个数表示ai 输出描述: 输出一行一个数表示答案 示例1 输入 10 1 10 8 5 6 2 3 9 4 7 输出 270原创 2017-12-03 11:25:10 · 408 阅读 · 0 评论 -
CodeForces - 652D(树状数组+离散化)
链接:CodeForces - 652D题意:给出n个区间,求每个区间中包含了几个其它的区间。题解:将每个区间的起点和终点视为一个坐标,那么问题就转化为了求一个点的左下方有几个点。将坐标按照x降序y升序排列,用树状数组维护y。要用离散化。#include <bits/stdc++.h> using namespace std; const int maxn = 2e5 + 10; i...原创 2018-01-23 11:59:26 · 464 阅读 · 1 评论 -
CodeForces - 961E(树状数组)
链接:CodeForces - 961E题意:给出一个序列A,下标1-N,求满足(1) x < y (2) a[x] >= y (3) a[y] >= x的数对有多少个。题解:求数对个数,考虑到用树状数组。但只用树状数组却无法同时满足条件(2)(3),故先用vector满足条件(3),再用树状数组。vector[min(i - 1, a[i])].push_back(i);即在满...原创 2018-04-09 18:58:06 · 1057 阅读 · 0 评论 -
CodeForces - 960D(模拟)
链接:CodeForces - 960D题意:给出一个二叉树,根节点是1,节点x的左孩子是2*x,右孩子是2*x+1。给出以下三个操作 1 X K :将x所在的那一层的所有数右移K位(循环移动) 2 X K :将x所在的那一层的所有数右移K位(循环移动),并且其每个节点的子树也跟着移动 3 X :输出X到根节点1的路径题解:因为移动的是值,所以原位置标号是不变的。我们只需记录该层...原创 2018-04-11 19:08:40 · 302 阅读 · 0 评论 -
CodeForces - 960F(主席树)
链接:CodeForces - 960F题意:一个有向图,可非连通,可重边,可自环,每条边上有权值。问权值严格递增,且路径不能违背输入顺序,的最长路径(指边数最多)的边数是多少。题解:用map存1e5个线段树,Query(u, x),表示以u为终点,且与u相连的边权值不大于x的最长路径边数。 状态按输入顺序转移,比如现在输入<u, v, w>。 那么状态从u转移到v...原创 2018-04-12 15:44:32 · 301 阅读 · 0 评论 -
2018年东北农业大学春季校赛:L-wyh的天鹅(Treap)
链接:2018年东北农业大学春季校赛:L-wyh的天鹅题意:插入元素,删除元素,查找第K大。题解:Treap。#include <bits/stdc++.h> using namespace std; #define Lc (o -> Ch[0]) #define Rc (o -> Ch[1]) #define val (o -> v) #define pre (o...原创 2018-04-18 18:55:42 · 162 阅读 · 0 评论