
树状数组
kuricip
如果你瞄准月亮,即便迷失,也是在星辰之间
展开
-
P3368 【模板】树状数组 2
P3368 【模板】树状数组 2 题目传送门 P3368 【模板】树状数组 2 题目大意 给你一个长度为n的数组 操作 1: 格式:1 x y k 含义:将区间 [x,y][x,y][x,y] 内每个数加上 kkk; 操作 2: 格式:2 x 含义:输出第 xxx 个数的值。 思路 区间更新,单点查询的树状数组 AC Code #include<cstdio> #include<algorithm> #include<iostream> #include<cstri原创 2020-08-30 17:56:17 · 172 阅读 · 0 评论 -
A Simple Problem with Integers(树状数组)
A Simple Problem with Integers 题目传送门 A Simple Problem with Integers 题目大意 给你一个长度为n的数组 进行m次操作,操作包括对区间的值进行加减和对区间进行求和 思路 区间更新,区间查询的树状数组 考虑使用更加简单的树状数组,区间更新可以使用差分维护,区间查询可以开两个数组维护 int sum1[N]; //(D[1]+D[2]+...+D[n])int\ sum1[N];\ \ \ \原创 2020-08-30 17:41:43 · 815 阅读 · 0 评论 -
敌兵布阵(树状数组模板题)
敌兵布阵 题目传送门 敌兵布阵 题目大意 给你一个长度为n的数组,可以对其单点进行加减操作,可以对区间进行区间求和 思路 标准的树状数组模板,这里用线段树比较麻烦,听说暴力维护前缀和也能过 AC Code #include<cstdio> #include<algorithm> #include<iostream> #include<cstring> using namespace std; #define endl '\n' #define INF 0x3f原创 2020-08-30 17:03:08 · 167 阅读 · 0 评论 -
树状数组模板
在此只贴出模板,具体的原理参考大佬博客 树状数组详解 模板 int n; int a[N],bit[N]; //对应原数组和树状数组 int lowbit(int x){ return x&(-x); } void updata(int i,int k){ //在i位置加上k while(i <= n){ bit[i] += k; i += lowbit(i); } } int getsum(int i){ //原创 2020-08-30 12:55:48 · 95 阅读 · 0 评论 -
Sleepy Cow Sorting(树状数组)
Sleepy Cow Sorting 题目传送门 Sleepy Cow Sorting 题目大意 给你一个长度为n的数组,每次只能移动最前面的那个数字到任意位置 求将数组按非递减排序需要的移动的最小次数和每次移动的距离 思路 可以将给定的数组分为两部分,分别为后半段顺序正确的部分,和前半段顺序不对的部分 所以需要改变的即为前半段的部分,即为最优解 每次移动的距离为在前半段乱序走过的路径和后半经过的路径,前半段可以自己求,后半段可以使用树状数组维护 即将后半段正序部分建立起点权为1的树 AC Code #in原创 2020-08-30 12:54:03 · 355 阅读 · 0 评论