线段树和树状数组训练
……
逃夭丶
你是我荒唐青春里唯一的认真
展开
-
RMQ学习笔记
定义 RMQ问题是指:对于长度为 n 的数列 A,回答若干询问 RMA(A,i,j)(i,j<=n),返回数列 A中下标在 i,j 里的最小(大)值,也就是说,RMQ问题是指区间内的最值问题。主要算法及复杂度爆搜,O(n) ~ O(qn)线段树,O(n) ~ O(qlogn)ST(实质是动态规划),O(nlogn) ~ O(q)RMQ标准算法:先规约成LCA,再规约成RMQ,...原创 2019-11-26 23:51:03 · 100 阅读 · 0 评论 -
HDU 3966 Aragorn's Story(基于点)(树链剖分+线段树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3966Problem DescriptionOur protagonist is the handsome human prince Aragorn comes from The Lord of the Rings. One day Aragorn finds a lot of enemies wh...原创 2019-11-07 23:43:48 · 91 阅读 · 0 评论 -
树链剖分学习笔记
一些定义树链剖分就是将树分割成多条链,然后利用数据结构(线段树、树状数组)来维护这些链。首先就是一血必须知道的概念:重儿子:子树节点数目最多的儿子节点轻儿子:子树节点中除了重儿子以外的儿子节点重边:父节点和重儿子连成的边轻边:父节点和轻儿子连成的边重链:有多条重边连接而成的路径轻链:有多条轻边连接而成的路径原理和实现剖分结果首先这是一颗树先不谈原理,直接将剖分后的树拿...原创 2019-11-07 21:16:00 · 125 阅读 · 0 评论 -
CodeForces 343D Water Tree
Mad scientist Mike has constructed a rooted tree, which consists of n vertices. Each vertex is a reservoir which can be either empty or filled with water.The vertices of the tree are numbered from 1 ...原创 2019-08-22 16:31:46 · 194 阅读 · 0 评论 -
POJ 2828 Buy Tickets(插队问题)
题目链接:http://poj.org/problem?id=2828DescriptionRailway tickets were difficult to buy around the Lunar New Year in China, so we must get up early and join a long queue…The Lunar New Year was approach...原创 2019-08-25 17:17:29 · 100 阅读 · 0 评论 -
前缀和、差分
本文参考与:https://blog.csdn.net/K_R_forever/article/details/81775899 https://blog.csdn.net/Lj_victor/article/details/81590852一维前缀和 其实可以把它理解为数学上的一维数列的前n项和。 对于一个给定的数列 A,他的前缀和数列 S 是通过地推能求出来的基本信息之一...原创 2019-08-20 22:01:09 · 2651 阅读 · 4 评论 -
Tallest Cow(模拟)
题目链接FJ’s N (1 ≤ N ≤ 10,000) cows conveniently indexed 1…N are standing in a line. Each cow has a positive integer height (which is a bit of secret). You are told only the height H (1 ≤ H ≤ 1,000,000)...原创 2019-08-20 17:32:13 · 109 阅读 · 0 评论 -
扫描线模板
给定平面上若干矩形,求出被这些矩形覆盖过至少两次的区域的面积.http://acm.hdu.edu.cn/showproblem.php?pid=1255#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<string>#i...原创 2019-08-19 20:06:41 · 76 阅读 · 0 评论 -
Can you answer these queries?(剪枝+线段树)
HDU 4027 http://acm.hdu.edu.cn/showproblem.php?pid=4027 A lot of battleships of evil are arranged in a line before the battle. Our commander decides to use our secret weapon to eliminate the battl...原创 2019-08-07 18:30:24 · 172 阅读 · 0 评论 -
求区间最大子段和(线段树模板)
const int maxn = 50100;struct node{ ll l,r; ll maxl,maxr,maxs; //左子区间,右子区间,总区间最大子段和 ll sum; //区间总和}tree[maxn<<2];ll num[maxn];void update(node &now,node <,node &rt)...原创 2019-08-18 16:54:09 · 198 阅读 · 1 评论 -
Bubble Sort(逆序对变式)
P is a permutation of the integers from 1 to N(index starting from 1).Here is the code of Bubble Sort in C++.for(int i=1;i<=N;++i) for(int j=N,t;j>i;—j) if(P[j-1] > P[j]) t=P[...原创 2019-08-08 19:50:28 · 152 阅读 · 0 评论 -
树状数组
树状数组支持的操作有两个: ----查询前缀和。----单点修改。int n;int a[maxn],c[maxn]; //对应原数组和树状数组int ask(int x) //数据过大就long long{ int ans=0; for( ;x;x-=(x&-x)) ans+=c[x]; return ans;}//区...原创 2019-08-04 19:40:28 · 129 阅读 · 0 评论 -
树状数组求逆序对 + 例题
该博客参考于:https://www.cnblogs.com/xiongmao-cpp/p/5043340.html逆序数(也叫逆序对) 逆序对通俗的来说,就是如果 i > j && a[i] < a[j] ,这两个就算一对逆序列,简单的来说,所有逆序对的个数和就是找一个数的前面有几个比他大的数,他们加起来的和就是逆序对的总数。用树状数组求逆序数的总数该背景下...原创 2019-08-04 17:19:15 · 305 阅读 · 0 评论