
树状数组
clover_hxy
The secret oppotunities are hidden inside every failure....
展开
-
树状数组
树状数组是对一个数组改变某个元素和求和比较实用的数据结构。两中操作都是O(logn)。 在解题过程中,我们有时需要维护一个数组的前缀和S[i]=A[1]+A[2]+...+A[i]。 但是不难发现,如果我们修改了任意一个A[i],S[i]、S[i+1]...S[n]都会发生变化。 可以说,每次修改A[i]后,调整前缀和S[]在最坏情况下会需原创 2016-02-02 15:22:00 · 282 阅读 · 0 评论 -
bzoj 2738: 矩阵乘法 (整体二分+二维树状数组)
2738: 矩阵乘法Time Limit: 20 Sec Memory Limit: 256 MBSubmit: 1334 Solved: 579[Submit][Status][Discuss]Description 给你一个N*N的矩阵,不用算矩阵乘法,但是每次询问一个子矩形的第K小数。Input 第一行两个数N,Q,表示矩原创 2017-01-12 11:17:46 · 380 阅读 · 0 评论 -
bzoj 4361: isn (容斥+DP+树状数组)
题解传送门题目大意:给出一个长度为n的序列A(A1,A2…AN)。如果序列A不是非降的,你必须从中删去一个数, 这一操作,直到A非降为止。求有多少种不同的操作方案,答案模10^9+7。题解f[i][j]f[i][j]表示选取到第i个元素,第i个元素必须选,一共选出了j个元素,选出的元素构成一个不降的子序列的方案数。 这个DP可以用树状数组优化,O(n2logn)O(n^2logn)的求解。 h原创 2017-03-23 18:45:47 · 786 阅读 · 0 评论 -
bzoj 2754: [SCOI2012]喵星球上的点名 (fail树+树状数组+lca+dfs序)
2754: [SCOI2012]喵星球上的点名Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 1710 Solved: 765[Submit][Status][Discuss]Descriptiona180285幸运地被选做了地球到喵星球的留学生。他发现喵星人在上课前的点名现象非常有趣。 假设课堂上有N个喵星人,每个喵星原创 2016-09-11 10:11:47 · 1027 阅读 · 0 评论 -
bzoj 3881: [Coci2015]Divljak (AC自动机+容斥原理+LCA+树状数组)
题目描述传送门题目大意:Alice有n个字符串S_1,S_2…S_n,Bob有一个字符串集合T,一开始集合是空的。 接下来会发生q个操作,操作有两种形式: 1 P,Bob往自己的集合里添加了一个字符串P。 2 x,Alice询问Bob,集合T中有多少个字符串包含串S_x。(我们称串A包含串B,当且仅当B是A的子串) Bob遇到了困难,需要你的帮助。题解简化一下问题,实际上的问题就是给出了一些原创 2017-03-31 21:01:46 · 632 阅读 · 0 评论 -
bzoj 2683: 简单题 (CDQ分治+树状数组)
题目描述传送门题目大意 题解CDQ分治,把询问拆成x1-1,和x2两种操作。 每次将区间中的操作按照横坐标排序,然后二分,加入[l,mid]中的操作,[mid+1,r]中的询问统计[y1,y2]之间的和。代码#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#defi原创 2017-03-24 17:02:49 · 352 阅读 · 0 评论 -
bzoj 3295: [Cqoi2011]动态逆序对 (CDQ分治+树状数组)
题目描述传送门题目大意:对于序列A,它的逆序对数定义为满足i题解代码#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#define N 100003#define LL long long using namespace std;struct data{原创 2017-03-24 17:48:14 · 389 阅读 · 0 评论 -
bzoj 4553: [Tjoi2016&Heoi2016]序列 (CDQ分治+DP+树状数组)
题目描述传送门题目大意:有一个长为n的序列,m个变换,每次变换把x位置的权值变成v.求一个子序列满足在任意变换中都单调不降(任意变换不能同时进行),问子序列的最长长度。题解先考虑暴力DP。如果点j 可以用来更新i的答案。那么所有包含j的变换以及j初值的最大值一定小于等于i的初值。所有包含i的变换以及i的初值的最小值一定大于等于j的初值。也就是max[j]<=a[i],a[j]<=min[i],j<=原创 2017-03-25 18:31:41 · 442 阅读 · 0 评论 -
bzoj 3637: Query on a tree VI (树链剖分+树状数组)
题目描述传送门题目大意:给出一棵树,m个操作,每次操作要么更改某个点的颜色要么询问与某个点颜色相同的联通块大小。题解对于每个点维护T[0/1][x]T[0/1][x]表示x的子树中当x的颜色为0/1时连通块的大小。 那么每次查询的时候我们只需要找到与x颜色相同的深度最浅的节点(x到该点路径上的所有节点必须与x同色),然后查询这个点子树中col[x]连通块的大小 对于修改,注意我们在维护的时候都是原创 2017-06-28 16:24:36 · 423 阅读 · 0 评论 -
bzoj 3688: 折线统计 (DP+树状数组)
题目描述传送门题解将所有的点按照x排序 f[i][j][0/1]f[i][j][0/1]表示以第i个结尾,分成了j段,最后一段上升/下降的方案数。 然后用树状数组优化DP代码#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#define N 100003#defi原创 2017-06-28 17:24:43 · 463 阅读 · 0 评论 -
bzoj 2743: [HEOI2012]采花 (树状数组)
题目描述传送门题目大意:求区间中出现次数超过1的数的个数题解做法与HH的项链类似。 区间中出现次数超过1的颜色的个数=区间中出现的颜色数-区间中出现次数恰好为1的颜色数。 将询问区间按照右端点排序。一次加入每个位置的贡献。 第一个树状数组中,只有每个颜色最靠右的位置贡献为1。 第二个树状数组中,每个颜色最靠右的位置贡献为1,他的前驱贡献为-1 每次区间查询即可。代码#include<ios原创 2017-06-29 18:02:34 · 369 阅读 · 0 评论 -
test 3 Problem A: [noip2016十连测第三场]平均数 (实数二分+排序+树状数组)
Problem A: [noip2016十连测第三场]平均数Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 158 Solved: 49[Submit][Status][Web Board]Description有一天,小A得到了一个长度为n的序列。他把这个序列的所有连续子序列都列了出来,并对每一个子序列都求了其原创 2016-11-16 16:59:01 · 724 阅读 · 0 评论 -
vijos P1810导弹拦截 (排序+树状数组)
P1810导弹拦截Accepted标签:NOIP普及组2010[显示标签]描述经过11 年的韬光养晦,某国研发出了一种新的导弹拦截系统,凡是与它的距离不超过其工作半径的导弹都能够被它成功拦截。当工作半径为0 时,则能够拦截与它位置恰好相同的导弹。但该导弹拦截系统也存在这样的缺陷:每套系统每天只能设定一次工作半径。而当天原创 2016-11-12 18:41:33 · 683 阅读 · 3 评论 -
code 1228 苹果树
1228 苹果树 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond题解 查看运行结果题目描述 Description在卡卡的房子外面,有一棵苹果树。每年的春天,树上总会结出很多的苹果。卡卡非常喜欢吃苹果,所以他一直都精原创 2016-03-20 16:43:29 · 842 阅读 · 0 评论 -
lalala
#include#include#include#include#include#define N 100003using namespace std;int n,m,len,t[N],tail,sz,num,next[N*2],point[N],v[N*2],c[N*2],pl[N],tot;char s[1000000];int ch[N][30],fail[N],isend原创 2016-04-04 22:06:11 · 311 阅读 · 0 评论 -
bzoj 1452: [JSOI2009]Count
1452: [JSOI2009]CountTime Limit: 10 Sec Memory Limit: 64 MBSubmit: 1768 Solved: 1058[Submit][Status][Discuss]DescriptionInputOutputSample InputSample Output原创 2016-04-05 08:21:38 · 357 阅读 · 0 评论 -
bzoj 1935: [Shoi2007]Tree 园丁的烦恼
1935: [Shoi2007]Tree 园丁的烦恼Time Limit: 15 Sec Memory Limit: 357 MBSubmit: 819 Solved: 368[Submit][Status][Discuss]Description很久很久以前,在遥远的大陆上有一个美丽的国家。统治着这个美丽国家的国王是一个园艺爱好者,在他的皇家花园里种植着各种奇花异草。原创 2016-04-05 11:12:41 · 454 阅读 · 0 评论 -
bzoj 2789: [Poi2012]Letters
2789: [Poi2012]LettersTime Limit: 20 Sec Memory Limit: 128 MBSubmit: 297 Solved: 197[Submit][Status][Discuss]Description给出两个长度相同且由大写英文字母组成的字符串A、B,保证A和B中每种字母出现的次数相同。现在每次可以交换A中相邻两个字符,求最少原创 2016-05-03 09:09:41 · 721 阅读 · 0 评论 -
bzoj 1878: [SDOI2009]HH的项链(树状数组)
1878: [SDOI2009]HH的项链Time Limit: 4 Sec Memory Limit: 64 MBSubmit: 2830 Solved: 1428[Submit][Status][Discuss]DescriptionHH有一串由各种漂亮的贝壳组成的项链。HH相信不同的贝壳会带来好运,所以每次散步 完后,他都会随意取出一段贝壳,思考它们所表达的含义。原创 2016-05-04 07:10:50 · 447 阅读 · 0 评论 -
bzoj 2716: [Violet 3]天使玩偶(cdq分治)
2716: [Violet 3]天使玩偶Time Limit: 80 Sec Memory Limit: 128 MBSubmit: 1231 Solved: 541[Submit][Status][Discuss]DescriptionInputOutputSample Input100 10081 2327 1原创 2016-09-10 19:54:45 · 5449 阅读 · 0 评论 -
bzoj 4548: 小奇的糖果(线段树+树状数组)
4548: 小奇的糖果Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 111 Solved: 52[Submit][Status][Discuss]Description有 N 个彩色糖果在平面上。小奇想在平面上取一条水平的线段,并拾起它上方或下方的所有糖果。求出最多能够拾起多少糖果,使得获得的糖果并不包含所有的颜色。原创 2016-09-12 20:16:07 · 773 阅读 · 0 评论 -
vijos P1842火柴排队 (树状数组求逆序对)
P1842火柴排队未递交标签:NOIP提高组2013[显示标签]描述涵涵有两盒火柴,每盒装有 n 根火柴,每根火柴都有一个高度。现在将每盒中的火柴各自排成一列,同一列火柴的高度互不相同,两列火柴之间的距离定义为:∑i=1n(ai−bi)2∑i=1n(ai−bi)2,其中 aiai 表示第一列火柴中第 i 个火柴的高度,bibi 表示第二列火柴中第原创 2016-11-11 21:25:40 · 593 阅读 · 0 评论 -
bzoj 1264: [AHOI2006]基因匹配Match (DP+树状数组)
题目描述传送门题目大意:求最长上升子序列。题解nlogn的最长上升子序列。 对于A串中的每个位置替换成B串中所有该字符出现位置的倒序。然后求最长上升子序列即可。 例如 A:abaca B:aabcc 那么替换得到的序列就是{2,1}{3}{2,1}{5,4}{2,1},之所以倒序排列是因为每个字符只能匹配一次,因为对于每个字符对应的区间都是严格递减的,所以求最长上升子序列的时候最多产生1原创 2017-06-09 14:44:14 · 357 阅读 · 0 评论