随笔分类 -  数据结构——树状数组

摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5542 求一个长度为n的序列的长度为m的严格上升子序列的数量,dp的状态是前i个数中长度为j的严格上升子序列且以第i个数结尾的决策数量。 转移方式:长度为i-1向长度为i转移,枚举位置比它小而且值比它小的 阅读全文
posted @ 2020-08-02 12:01 WA自动机~ 阅读(161) 评论(0) 推荐(0)
摘要:题目链接:https://www.acwing.com/problem/content/245/ 题目给出一个长度为n-1的序列表示一个位置前面有多少个比他小,问这个序列是多少?这个序列是一个1-n的全排列。 通过从后向前扫描可知每个位置的编号,比如最后一个是an+1,这个位置在之后不考虑,然后从接 阅读全文
posted @ 2020-07-13 22:59 WA自动机~ 阅读(180) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=3468 树状数组的区间修改区间查询模式,简单题目。用差分以及维护两个数列。 代码: #include<iostream> #include<cstdio> using namespace std; typedef long long l 阅读全文
posted @ 2020-07-13 21:29 WA自动机~ 阅读(154) 评论(0) 推荐(0)
摘要:题目链接:https://www.acwing.com/problem/content/243/ 给定一个全排列,对于每个位置,都求前面有多少个数比它小,有多少个数比他大,右边有多少个数比他小有多少个数比他大。通过树状数组可以在O(nlogMAX)时间内求出。 代码: #include<iostre 阅读全文
posted @ 2020-07-13 18:27 WA自动机~ 阅读(153) 评论(0) 推荐(0)
摘要:题目链接:https://www.luogu.com.cn/problem/P5057 题目中首先给出一个全零序列,操作有两种,一种是将[l,r]区间的01序列取反,还有一种是单点更新。我们考虑到取反可以让这个位与1求异或,可以用树状数组更新一段,异或运算和加法运算有着很相似的地方,对于加法,我们为 阅读全文
posted @ 2020-03-25 20:28 WA自动机~ 阅读(387) 评论(0) 推荐(0)
摘要:题目链接:https://www.luogu.com.cn/problem/P1972 题意大致是:给定一个序列长度为n,给出m个查询区间,要求响应是区间内不同的数的个数。为此我们考虑到树状数组的区间查询时间复杂度是O(logn),对于题目1e6的数据O(mlogn)的复杂度是能过的。所以我们考虑用 阅读全文
posted @ 2020-03-08 08:46 WA自动机~ 阅读(191) 评论(0) 推荐(0)
摘要:题目链接:http://icpc.njust.edu.cn/Problem/Hdu/2838/ 题目解法:题目给出一个1-n的排列,操作只有一种:交换相邻的元素,代价是两个元素之和,问将该序列变成升序排列的最小代价。就是要在线求解,每输入一个数a就要查询之前的数中有多少数比a大,这些数由于在a的前面 阅读全文
posted @ 2020-03-07 23:23 WA自动机~ 阅读(157) 评论(0) 推荐(0)
摘要:题目链接:http://icpc.njust.edu.cn/Problem/Hdu/2642/ 代码如下: 1 #include<bits/stdc++.h> 2 using namespace std; 3 #define scan(n) scanf("%d",&n) 4 #define f(i, 阅读全文
posted @ 2020-03-07 22:26 WA自动机~ 阅读(148) 评论(0) 推荐(0)
摘要:题目链接:http://icpc.njust.edu.cn/Problem/Hdu/2492/ 题目大意:给定一个序列,求长度为三的子序列(a,b,c)使得a<b<c或a>b>c,求这样的序列的个数;只要对于每一个位置的数,用树状数组维护前缀和,求出该位置前面比他大的数的个数和比他小的个数,再用另一 阅读全文
posted @ 2020-03-07 21:55 WA自动机~ 阅读(121) 评论(0) 推荐(0)
摘要:题目链接:http://icpc.njust.edu.cn/Problem/Hdu/1541/ 题意是:在二维图上有一系列坐标,其中坐标给出的顺序是:按照y升序排序,如果y值相同则按照x升序排序。这个信息十分关键,所以借此我们可以知道最新给出点A(x,y)之后,y大于等于任何之前点的y值,所以只要知 阅读全文
posted @ 2020-03-07 21:07 WA自动机~ 阅读(133) 评论(0) 推荐(0)
摘要:hdu 1166排兵布阵 单点修改+区间查询的树状数组的应用: 1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef unsigned int ui; 4 typedef long long ll; 5 typedef unsigned 阅读全文
posted @ 2020-03-07 20:09 WA自动机~ 阅读(184) 评论(0) 推荐(0)
摘要:树状数组也可说是二分索引树,是一种高级数据结构,但其实用起来很方便。 本文参考博客如下: http://www.cppblog.com/menjitianya/archive/2015/11/02/212171.html https://blog.csdn.net/zars19/article/de 阅读全文
posted @ 2020-03-07 11:39 WA自动机~ 阅读(202) 评论(0) 推荐(0)