算法
文章平均质量分 72
想谈恋爱的范德川
我是小表弟
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Codeforces Beta Round #19 D-Points(树状数组+离散化)
Codeforces Beta Round #19 D-Points 题目 题目大意 和以前在POJ做的的数星星差不多,POJ数星星,这里也是在笛卡尔坐标系上有多个点,只不过现在对点有增删操作,并且最一开始坐标系上是没有点的,并且查找的是该最靠近查找点的最左下的点。 样例 输入样例 case 1: 7 add 1 1 add 3 4 find 0 0 remove 1 1 find 0 0 add 1 1 find 0 0 case 2: 13 add 5 5原创 2021-07-11 21:21:12 · 368 阅读 · 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 · 830 阅读 · 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 · 1652 阅读 · 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 · 699 阅读 · 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 · 846 阅读 · 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 · 2463 阅读 · 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 · 722 阅读 · 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 · 475 阅读 · 0 评论 -
【线性动态规划】最长不下降子序列(LIS)
最长不下降子序列(线性动态规划) 我们知道,递推就是按照递推公式不断往前求解的一个过程,对于当前,只有一个状态描述当前的值。若某些问题并非由一个状态而是由多个状态不断推导,那么这种方法就是动态规划,简称DP。动态规划是运筹学的一个分支,是将问题分解成各个阶段,由相邻的两个阶段根据状态转移方程推到求解的一种方法。 所谓的线性动态规划,就是该问题模型是线性的,数据结构表现为线性表的形式。 题目 题干: 最长不下降子序列。给定一个长度为n的序列a,求出这个序列中最长不下降子序列,所谓最长不下降子原创 2021-01-25 15:31:03 · 860 阅读 · 0 评论
分享