树状数组
左佥都御史
这个作者很懒,什么都没留下…
展开
-
D. Petya and Array(权值线段树or树状数组),模仿逆序对
知识点:对于求逆序对的方法的扩展。题目:给定一个序列,要求得到区间和小于x的总序列数方法:和求逆序数的方法差不多。sum[i]−sum[j]<k=>sum[j]>sum[i]−ksum[i]-sum[j]<k =>sum[j]>sum[i]-ksum[i]−sum[j]<k=>sum[j]>sum[i]−k所以只需要求 i>j同时 满足上述条件的 <i,j>对。思路挺清晰的。但是难点在于考虑一些细节和坐标的离散化。1原创 2020-05-22 18:07:18 · 218 阅读 · 0 评论 -
差分数组与树状数组区间更新
查分数组差分数组是通过维护相邻元素的差值,来实现对多次区间操作的优化。(第一次见)比方说给定多次操作 a,b,c, 对[a,b]内元素都+c 。然后求各元素的值如果是普通的暴力求法,每次对[a,b]复杂度太高了。所以我们整一个优化的技巧。穿件一个差项数组。c[i]=a[i]−a[i−1](i>=2)c[i]=a[i]-a[i-1](i>=2) c[i]=a[i]−a[i−1](i...原创 2019-11-04 21:38:58 · 533 阅读 · 0 评论 -
nefuoj1249|洛谷P2345-树状数组&推式子-你牛
没有题目描述qwq https://www.luogu.org/problemnew/show/2345. 哈哈。。 开始想两次排序搞一搞,发现这个式子的两个玩意都得同时计算,分开计算就弄不清了。。 具体看图把。。 维护两个bit。我写了一个结构体。 这道题可以用bit的地方。 ① 数据范围。②结果中,牛的声音越小,计算次数越小。 ③ 关键也是把式子变一下。开始我听别人用线段树的原创 2017-11-27 12:49:01 · 280 阅读 · 0 评论 -
Gym - 101572G -(set&细节)|(模拟&理解)|树状数组&好题-Galactic Collegiate Programming Contest
http://codeforces.com/gym/101572/attachments 给定一n个人过题的情况。 输入 a,b, 表示第a个人 花了b分钟过了一道题。 至于排名,和acm的一样,过题数优先,一样则花费时间越少越靠前。 问你a的时时排名(如果过题数 和时间都一样则并列)我开始的思路是发现只有每次更新,只有这个人才可能超过1号。更新ans(ans为超过1的人数)。 所以就记录原创 2017-11-21 14:45:21 · 471 阅读 · 0 评论 -
Wannafly挑战赛4-dfs序&线段树|搜索&思维|BIT-树的距离
https://www.nowcoder.com/acm/contest/35/D dfs序那个方法是标准做法。但是不知道怎么去用线段树搞。 给定一个树(根为1),然后给你 x和k,要求你求x为根的子树中 距离x大于等于k的点的 和。 一看子树,就知道是dfs序。关键是如何搞线段树orBIT ,把距离根节点的值 映射到 线段树上后(线段树的下标意义代表时间。) 维护最大值和最小值和 和(即线原创 2017-11-30 14:12:41 · 247 阅读 · 0 评论 -
hdu3887-dfs序&树状数组-Counting Offspring
http://acm.hdu.edu.cn/showproblem.php?pid=3887 dfs序可以解决一些子树上信息维护。 给定一个树,问你某点子树上的编号小于当前结点的数量是多少。 当然要建立双向图了,因为你不知道树的走向。 走完dfs序之后(当然,这个处理方法本质上没有什么难的,我甚至觉得tarjan也是dfs序,但是这个dfs序还包括遍历完的时间。而tarjan却是把他当成唯一原创 2017-11-06 18:39:14 · 255 阅读 · 0 评论 -
poj3321-dfs序&树状数组&dfs序模板题-Apple Tree
开始用getsum()-getsum()当作单点查询竟然tle了。。 于是乎 我用了一个计数器。 和上一道题一摸一样。真的是模板题啊 亲们qwq 就对着照了上一道题改了一下下 一棵树上每个点上挂一个苹果 下列操作:① 查询以x为根的子树上有多少个苹果(裸的我tm) ② 对苹果的数量进行取反(如果有变成没有,没有变成有)#include <iostream>#include <stdio原创 2017-11-06 20:12:02 · 264 阅读 · 0 评论 -
经典算法学习-循坏赛日程表-分治|递推|压位lowbit
① 问题描述 设有n=2^k个运动员,要进行网球循环赛。现在要设计一个满足以下要求的比赛日程表 (1).每个选手必须与其他n-1个选手各赛一场 (2).每个选手一天只能赛一次 (3).循环赛一共进行n-1天。 ② 这种表只有一种情况。可以用经典的分治来做。 发现 当表的长度为4时,存在 1 2 3 4 2 1 4 3原创 2017-09-18 13:09:52 · 721 阅读 · 0 评论 -
计蒜客-树状数组&KMP-Query on a string
https://nanti.jisuanke.com/t/16956 写了好多次,用我自己的kmp写法一直 tle。 用kmp处理母串中每个位置 失配模式串的位置 然后用树状数组处理,(据说线段树会卡??) kmp还要好好学。。#include<bits/stdc++.h>using namespace std;/*每次维护保存一个 当前位置失配的位置。(相当于维护一个next,因原创 2017-09-14 21:23:13 · 184 阅读 · 0 评论 -
POJ2155-二维树状数组-Matrix
https://vjudge.net/problem/POJ-2155 给定一个矩阵,初始化都为0 两种操作 1 给定区间 左上角和右下角,将区间内坐标(闭区间) 取反操作 2 查询 某单点。 没有想到这样搞,很6,取反的操作、(摘自大佬的照片) http://blog.csdn.net/zxy_snow/article/details/6264135 这个 每次依据四个点。(注原创 2017-08-07 10:20:13 · 194 阅读 · 0 评论 -
Codeforces Round #427 (Div. 2) 题解(挺好的)
B The number on the board 连接 http://codeforces.com/contest/835/problem/B 给定一个数,判断他们之间的各项和是否大于等于k,如果不大于k 要改变多少个数才能使他们的项和大于等于k。 :比赛的时候看错题了,以为要求他们之间的差值最小,因为题解中的两个数的差别大小也是1。 如果要求差别最小,应该求两种情况1 比原数大的。原创 2017-08-01 22:00:53 · 228 阅读 · 0 评论 -
HDU2689-树状数组&逆序数|分治-Sort it
https://vjudge.net/problem/HDU-2689 给定一个 1-n的全排列,问逆序数是多少。 每次更新,然后统计前面比i小的数。 或者用分治的思想。每次折半判断 逆序数总共分成三种情况 1#include <iostream>#include <cstdio>#include <cstring>using namespace std;/* 方法。 判断原创 2017-08-07 19:43:41 · 333 阅读 · 0 评论 -
Codeforces Round #424 (Div. 2, )-树状数组|线段树-E. Cards Sorting
、http://codeforces.com/contest/831/problem/E 给定一副扑克,规则如下 1 输入的数组是从顶到尾的顺序。 2 每次从顶上拿扑克,当这个值在当前排堆中是最小的(可能会重复,不过没关系),我们就把他抽出来。然后继续。如果不是,我们就把他放在牌底,直到所有的牌全部都拿掉之后就完事了,问你他所需要的操作数是多少。 数据范围 扑克数量 100000。 我们可原创 2017-07-20 13:18:31 · 371 阅读 · 1 评论 -
Poj2352-树状数组或线段树
https://vjudge.net/problem/POJ-2352 确定星星的等级 就是他左下方星星的数目 又因为星星本来就是从左下到右上输出的。。。 所以直接搞就好。#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>const int maxn=35002;const int N=3原创 2017-06-16 21:31:10 · 193 阅读 · 0 评论