
算法
文章平均质量分 72
想谈恋爱的范德川
我是小表弟
展开
-
Codeforces Beta Round #19 D-Points(树状数组+离散化)
Codeforces Beta Round #19D-Points题目题目大意 和以前在POJ做的的数星星差不多,POJ数星星,这里也是在笛卡尔坐标系上有多个点,只不过现在对点有增删操作,并且最一开始坐标系上是没有点的,并且查找的是该最靠近查找点的最左下的点。样例输入样例case 1:7add 1 1add 3 4find 0 0remove 1 1find 0 0add 1 1find 0 0case 2:13add 5 5原创 2021-07-11 21:21:12 · 286 阅读 · 0 评论 -
P2048 [NOI2010] 超级钢琴(ST表 + 优先队列优化)
P2048 [NOI2010] 超级钢琴题目小 Z 是一个小有名气的钢琴家,最近 C 博士送给了小 Z 一架超级钢琴,小 Z 希望能够用这架钢琴创作出世界上最美妙的音乐。这架超级钢琴可以弹奏出 n 个音符,编号为 1 至 n。第 i 个音符的美妙度为 A_i,其中 A_i 可正可负。一个“超级和弦”由若干个编号连续的音符组成,包含的音符个数不少于 L 且不多于 R。我们定义超级和弦的美妙度为其包含的所有音符的美妙度之和。两个超级和弦被认为是相同的,当且仅当这两个超级和弦所包含的音符集合是相同的。小原创 2021-07-02 16:33:12 · 714 阅读 · 0 评论 -
树状数组之区间最值
树状数组之区间最值原理数学原理:建立树状数组利用上面的性质,在树状数组的尾部插入数据,来建立一个树状数组void push(int pos){ int i,lb = lowbit(pos); c[pos] = a[pos]; for(i=1;i<lb;i <<=1){ c[pos] = max(c[pos],c[pos-i]); }}树的维护void update(int pos,int v){ i原创 2021-02-09 20:09:59 · 1454 阅读 · 1 评论 -
树状数组之区间修改,区间查询
树状数组之区间修改,区间查询原理我们先开俩数组;原数组:a [i], 每一个元素的值差分数组:b [i], 下标 i 的元素存放 a[i]-a[i-1] 的差值,b[1]=a[1]我们可以得到下面的公式:于是,我们得到了一个 重要公式我们设:b1 [i] 数组表示:b1 [i] = a [i]-a [i-1], 差分数组b2 [i] 数组表示:b2 [i] = i* b1 [i]c1 [i] 针对 b1 的树状数组c2 [i] 针对 b2 的树状数组代码int n,原创 2021-02-09 19:31:02 · 614 阅读 · 0 评论 -
树状数组之区间修改,单点查询
树状数组之区间修改,单点查询原理首先我们开三个数组:原数组:a [i], 每一个元素的值差分数组:b [i], 下标 i 的元素存放 a [i]-a [i-1] 的差值,b [1]=a [1]树状数组:c [i], 针对数组 b 行成的树状数组我们就形成了下面的这种数据结构:我们发现对于树状数组 C[i]C[i] 来说,query(i)=a[i]query(i)=a[i], 也就是对应数的值.如果我们想 2->4 的数加 10 怎么办?我们只要修改 b[i] 数组如下:b[2原创 2021-02-09 18:29:45 · 753 阅读 · 0 评论 -
树状数组之求逆序对
树状数组之求逆序对逆序对 设 A 为一个有 n 个数字的有序集 (n>1), 其中所有数字各不相同。 如果存在正整数 i, j 使得 1 ≤ i < j ≤ n 而且 A [i] > A [j], 则 <A [i], A [j]> 这个有序对称为 A 的一个逆 序对,也称作逆序数。 例如,数组 (3,1,4,5,2) 的逆序对有 (3,1),(3,2),(4,2),(5,2), 共 4 个。原理我们有以下的设定a[]={0,3,1,4,5,2} 其中 3,1,原创 2021-02-09 17:50:58 · 2197 阅读 · 0 评论 -
树状数组之前缀和
树状数组之前缀和原理下标ii 管辖的区域大小:ii 对应的二进制保留最低位的11, 其它位全部置0。c[i]c[i] 的父亲的下标:用lowbit(i)lowbit(i) 表示ii 的管辖区域,那么i+lowbit(i)i+lowbit(i) 就表示ii 父亲结点的下标c[i] 左边的仅挨着自己管辖区间的点的下标:i−lowbit(i)i−lowbit(i)问题 1: 我们如何去求 lowbit(i)lowbit(i) :i & (-i) 就会把 i 的二进制除最低位 1 外全部置原创 2021-02-09 16:45:45 · 636 阅读 · 0 评论 -
Balanced Lineup(RMQ问题)
RMQ区间最值(ST表) RMQ ( Range Minimum / Maximum Query ) 问题是指:对于长度为 n 的数列 A,回答若干询问 RMQ (A , i , j ) ( i , j ≤ n),返回数列A中下标在 i , j 里的最小(大)值,也就是说,RMQ问题是指求区间最值的问题。 关于RMQ问题,一般情况我们采用ST算法。 ST算法是一种用于解决RMQ,即区间最值查询)问题的离线算法,类似于线段树和树状数组的,其功能特性差不多,当实现起来的话,显然是ST算法更为简原创 2021-01-31 10:45:34 · 379 阅读 · 0 评论 -
【线性动态规划】最长不下降子序列(LIS)
最长不下降子序列(线性动态规划) 我们知道,递推就是按照递推公式不断往前求解的一个过程,对于当前,只有一个状态描述当前的值。若某些问题并非由一个状态而是由多个状态不断推导,那么这种方法就是动态规划,简称DP。动态规划是运筹学的一个分支,是将问题分解成各个阶段,由相邻的两个阶段根据状态转移方程推到求解的一种方法。 所谓的线性动态规划,就是该问题模型是线性的,数据结构表现为线性表的形式。题目题干: 最长不下降子序列。给定一个长度为n的序列a,求出这个序列中最长不下降子序列,所谓最长不下降子原创 2021-01-25 15:31:03 · 756 阅读 · 0 评论