//每个数字只会被它后面的比它小的数字影响,且会向右移动相应个数的位置 //比如:6 4 3 5 2 1 。4后面比它小的有 三个,因此它的最右边位置就是当前位置 +3,即5 //如果该数字本身在标准位置左边,那无须考虑,初始位置就是最左端 //如果它在标准位置右边,我们可以知道,它最终肯定要回到标 ...
分类:
编程语言 时间:
2020-02-09 20:17:01
阅读次数:
69
P1908 逆序对 离散化+树状数组:AC_Code 1 #include <bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 const int maxn=500010; 5 6 int a[maxn],tree[max ...
分类:
编程语言 时间:
2020-02-09 20:09:07
阅读次数:
71
Sourcebzoj3441Hint请先思考后再展开按被删除的顺序考虑每个点,然后按照题意模拟Solution请先思考后再展开被删除的顺序一定是按照【能被操作的次数】为第一关键字,位置作为第二关键字然后你维护当前轮数和当前走到什么位置(我存了具体位置,其实应该存排名更好写……)用个树状数组资瓷排名和... ...
分类:
其他好文 时间:
2020-02-09 12:06:29
阅读次数:
59
ST表超级详解 关于ST表,有很多文章,这里本蒟蒻也来发一波~~ 希望能为您提供帮助~~ 1.ST表的介绍 ST表算法全称Sparse-Table算法,是由Tarjan提出的一种解决RMQ问题(区间最值)的强力算法。离线预处理时间复杂度 θ(nlogn),在线查询时间 θ(1),可以说是一种非常高效 ...
分类:
其他好文 时间:
2020-02-08 14:05:00
阅读次数:
113
入门级数据结构算法。复习一下,分别手写一个。 线段树版本(过了CF上的https://codeforces.com/contest/1291/problem/D): 1 #include<bits/stdc++.h> 2 #define f(i,a,b) for(int i=a;i<=b;i++) ...
分类:
编程语言 时间:
2020-02-08 13:26:22
阅读次数:
145
介绍本题的两种做法: 方法1 前置芝士 1. "线段树" :一个很重要的数据结构. 2. "树状数组" :一个很重要的数据结构. 具体实现 区间修改,单点查询很容易就会想到树状数组了,至于查询前k个数的和又可以丢给权值线段树去干,所以第一种很显然的方法就是树状数组套一个线段树实现. 代码 方法2 前 ...
分类:
其他好文 时间:
2020-02-08 11:56:46
阅读次数:
65
一: 区间问题:什么时候用线段树,什么时候用ST 如果需要动态维护,需要添加或者删除,那么就必须用到线段树,线段树的单次查询时间为O(logn),如果查询量大还是很浪费时间。 在不需要动态维护的时候,ST算法的查询速度可以到达O(1) 二: 【什么样的问题适合ST算法】例如,RMQ问题和RGQ问题适 ...
分类:
其他好文 时间:
2020-02-07 14:42:26
阅读次数:
76
原理很简单,利用差分知识做的,只能单点查询,在性能上优于线段树,但没有区间查询功能。 1 #include<bits/stdc++.h> 2 #define f(i,a,b) for(int i=a;i<=b;i++) 3 using namespace std; 4 5 const int N=5 ...
分类:
编程语言 时间:
2020-02-07 13:08:12
阅读次数:
82
地址 https://www.acwing.com/problem/content/description/244/ 给定一个长度为N的数列A,以及M条指令,每条指令可能是以下两种之一: 1、“C l r d”,表示把 A[l],A[l+1],…,A[r] 都加上 d。 2、“Q l r”,表示询问 ...
分类:
编程语言 时间:
2020-02-06 21:36:44
阅读次数:
79
[CQOI2011]动态逆序对(luogu) 题目描述 对于序列 aa,它的逆序对数定义为集合 \{(i,j)| i<j \wedge a_i > a_j \}{(i,j)∣i<j∧ai?>aj?} 中的元素个数。 现在给出 1\sim n1~n 的一个排列,按照某种顺序依次删除 mm 个元素,你的 ...
分类:
编程语言 时间:
2020-02-06 19:38:09
阅读次数:
77