
数据结构 树状数组
文章平均质量分 84
Fsss_7
这个作者很懒,什么都没留下…
展开
-
hdu5603the soldier of love
链接:http://acm.hdu.edu.cn/showproblem.php?pid=5603题意:给你多组数据,每组数据第一行是一个n和m,表示的意义是n条线段和m组点。接下来是n条线段的左端点和右端点,m行每行第一个是这组点的个数Ki,接下来同一行有Ki个数表示点的位置。问题是求对于每组点来说,有多少条线段至少有一个该组上的点在线段上,输入m行。分析:其实题目要求的问题,我们有一种原创 2015-12-29 22:10:14 · 501 阅读 · 0 评论 -
hdu4521小明系列问题——小明序列
链接:http://acm.hdu.edu.cn/showproblem.php?pid=4521题意:中文题。分析:最长上升子序列,距离大于d。一点点变动而已,用线段树或树状数组维护一下小当前值a[i]且在i-d-1之前的所有的dp[j]就行了。代码:#include#include#include#include#include#include#include#i原创 2016-05-10 22:24:03 · 589 阅读 · 0 评论 -
acdream1157Segments
链接:http://acdream.info/problem?pid=1157题意:中文题。分析:cdq分治的练习题,分析同BZOJ1176题解,稍微变得点就是比较变为x>=x',y=z',然后记得离散化和处理好题目说的删除操作就好了。O(nlogn^2)。代码:#include#include#include#include#include#include#inclu原创 2016-04-23 23:11:54 · 372 阅读 · 0 评论 -
bzoj3262: 陌上花开
链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3262题意:中文题。分析:cdq分治练习题,详细分析戳这里,不过这题没有好的时间戳z,因为这题的三个值都是在1~k范围内的,那就是说有的值不唯一有的不存在,那么我们在分治的时候就要注意边界了,所以我改成了4个参数的分治,详见代码。O(nlogk^2)。代码:#include#i原创 2016-04-24 15:25:04 · 530 阅读 · 0 评论 -
hdu5700区间交
链接:http://acm.hdu.edu.cn/showproblem.php?pid=5700题意:中文题。分析:我们枚举每个起点,然后找至少有k条线段覆盖到的最右位置,我们可以先将线段按左端点排序,枚举到起点i时将左端点为i的线段的右端点都加入树状数组,如果当前我们加入了g条线段的右端点在树状数组里,那么我们只要找到第k大的右端点就行了,用树状数组处理下就好了。代码:#inc原创 2016-07-16 15:18:46 · 554 阅读 · 0 评论 -
51nod1685 第K大区间2
链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1685题意:中文题。分析:二分答案,然后判断大于等于当前答案的数是否有>=k个奇区间中位数是大于等于当前答案的。比赛的时候没想到这么快速判中位数大于等于当前答案,再多想想其实就出来了。设当前答案为x,那我们将所有>=x的数标为1,(j-i)/2,i和j不同奇偶原创 2016-07-17 17:04:23 · 862 阅读 · 0 评论 -
Codeforces Round #365 (Div. 2)D. Mishka and Interesting sum
链接:http://codeforces.com/contest/703/problem/D题意:给定一个n个数的数组,给定m个询问每次询问一个区间[l,r],求在a[l]~a[r]中出现次数为偶数的数的异或和。分析:首先如果算区间异或和我们可以用xo[r]^xo[l-1]的方法处理,但是我们会发现这样刚好得到的是出现次数为奇数的数的异或和,我们需要将其中的每个数恰好出现偶数次的变成奇数次原创 2016-08-05 03:50:51 · 446 阅读 · 0 评论 -
hdu5869Different GCD Subarray Query
链接:http://acm.hdu.edu.cn/showproblem.php?pid=5869题意:给定一个a数组,每次询问一个区间[l,r]求这个区间内所有子区间的gcd的种类。分析:很容易想到,当我们固定右端点时在L减小的情况下gcd是递减的且最多形成loga[i]个不同的gcd,当我们固定右端点时对于不同的gcd有一个最大左端点(即L至少要到这个才能在L~R这个区间中能形成这个g原创 2016-09-11 20:39:51 · 1431 阅读 · 0 评论 -
hdu3966Aragorn's Story
链接:http://acm.hdu.edu.cn/showproblem.php?pid=3966题意:给定一棵树,3中操作:A:给u->v的路径上所有点点权+k。B:给u->v的路径上所有点点权-k。C:求节点u的点权。分析:树链剖分+树状数组维护。代码:#include#include#include#include#include#include#include原创 2016-08-12 19:08:55 · 273 阅读 · 0 评论 -
hdu5892Resident Evil
链接:http://acm.hdu.edu.cn/showproblem.php?pid=5892题意:给定n和m表示有一个n*n的矩阵和m个操作,操作1:给出左上角的位置[x1,y1]和右下角的位置[x2,y2],然后给定k表示有k对[a,b]接下来在这个给定的矩阵中每个格子中都添加b个a类物品;操作2:给定左上角位置[x1,y1]和右下角位置[x2,y2],求所有物品在这个矩阵中的奇偶情况原创 2016-09-22 17:17:23 · 830 阅读 · 0 评论 -
poj2481Cows
链接:http://poj.org/problem?id=2481题意:给定n个区间[li,ri]。输出每一个区间被多少区间完全包含。分析:我们直接按l为第一关键字,l相同是r从大到小排序。我们在插入一条线段时在li的位置+1,在ri+1的位置-1,然后我们处理每一个区间时只要查看当前ri前的和为多少即可。用树状数组维护一下即可。记得是完全包含,所以我们还要处理一下重合的情况。O(nlog原创 2016-04-27 22:04:24 · 398 阅读 · 0 评论 -
hdu1394Minimum Inversion Number
链接:http://acm.hdu.edu.cn/showproblem.php?pid=1394题意:给定一个长度为n的数组,那么每次将第一个元素放在最后一个能形成n个长度为n的数组,求出所有情况中逆序对最少的个数。分析:设当前第一个元素为x,那么比它小的有x个元素,比它大的有n-x-1个元素,将它放到数组为对逆序对的变化是n-2*x-1个。那么我们只要枚举这个分开的位置m就行了。代原创 2016-04-14 20:18:40 · 746 阅读 · 0 评论 -
bzoj2434: [Noi2011]阿狸的打字机
链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2434题意:中文题。分析:给定一个这样的字符串很容易就想建一颗trie树。然后在trie树上进行匹配,这不就是AC自动机么!我们可以直接考虑这样的一种暴力,当查询x,y时我们只要将从root到y路径上所有的点沿着fail跑一遍,只要经过一次x就ans+1。但是这样会超时,我们在观察这个结原创 2016-04-10 21:07:40 · 397 阅读 · 0 评论 -
bzoj3529: [Sdoi2014]数表
链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3529题意:中文题。。。分析:同bzoj2301,论文题。。代码:#include#include#include#include#include#include#include#include#include#include#include#pragma原创 2016-01-21 22:30:25 · 604 阅读 · 0 评论 -
codevs1282 约瑟夫问题
链接:http://codevs.cn/problem/1282/题意:中文题。分析:约瑟夫问题,用树状数组或者线段树维护一下就行了。代码:#include#include#include#include#include#include#include#include#include#include#include#include#pragma commen原创 2016-03-29 17:38:10 · 435 阅读 · 0 评论 -
bzoj1103[POI2007]大都市meg
链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1103题意:中文题。分析:题目要求的是每次都是从节点1计算到节点x的距离,我们可以利用长度为2*n的dfs序的性质,因为在dfs序中我们会保存节点i进入时间l[i]和出去时间r[i],那么我们可以设置一个树状数组记录前缀和,我们将所有的l[i]位置+1,所有的r[i]位置-1。这样有什么原创 2016-03-30 23:33:06 · 670 阅读 · 0 评论 -
Codeforces Round #343 (Div. 2)
链接:http://codeforces.com/contest/629problemA:给你一个n*n的矩阵,矩阵每个格子要么为空要么为C,求有多少对满足条件的C,条件为这两个C在同一行或同一列。分析:直接统计每一行和每一列的C的个数,然后k*(k-1)/2加入答案即可。O(n^2)代码:#include#include#include#include#include#原创 2016-02-23 14:34:36 · 480 阅读 · 0 评论 -
hdu4358Boring counting
链接:http://acm.hdu.edu.cn/showproblem.php?pid=4358题意:给定一棵n个节点的树和k,每个点有点权,再给q个询问,每次询问:在以v为根的子树中有多少个数恰好出现了k次。分析:遇到子树问题,首先考虑到的就是dfs序,然后发现还有一个条件k。我的处理方式是:先离散化,然后构出dfs序,然后处理出in[],out[],lose[]数组,如果当前i中的数原创 2016-04-06 20:24:36 · 511 阅读 · 0 评论 -
poj2985The k-th Largest Group
链接:http://poj.org/problem?id=2985题意:初始给定n个元素个数为1的集合,然后给定m个操作,有两种操作:C=0时输入a,b表示将a,b所在的集合合并成一个集合,C=1时输入k表示询问当前所有集合中集合大小排序中的第k大的集合的size。分析:集合合并直接用并查集维护就可以了,找第k大的话用树状数组找第k大就好了。代码:#include#include原创 2016-03-26 14:54:25 · 392 阅读 · 0 评论 -
BestCoder Round #77
链接:http://bestcoder.hdu.edu.cn/分析:1001,子集异或和的异或和,除了n==1的情况外所有元素都会在偶数个子集中出现,所以特判一下即可。O(n)代码:#include#include#include#include#include#include#include#include#include#include#include#inc原创 2016-03-27 15:53:15 · 492 阅读 · 0 评论 -
bzoj1901: Zju2112 Dynamic Rankings
链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1901题意:中文题。分析:带修改的区间第k小,在可持久化线段树外面套一个树状数组,然后将建树的过程改点。时间O(nlognlogn)+空间T(nlognlogn)代码:#include#include#include#include#include#include#i原创 2016-04-12 19:26:51 · 619 阅读 · 0 评论 -
bzoj3295: [Cqoi2011]动态逆序对
链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3295题意:中午题。分析:本来打算练习cdq分治的,明天补吧。不过看到这题一眼就想用可持久化线段树,不过带修改的可持久化线段树开销有点大,变了一种方法卡了点空间才过。详见代码。O(nlogn*logn)。代码:#include#include#include#include原创 2016-04-24 23:31:29 · 653 阅读 · 0 评论 -
2016 ICPC 北京网络赛I题Countries,hiho1391 : Countries
链接:http://hihocoder.com/problemset/problem/1391题意:有两个国家A,B,他们都有一个防御系统但是只给出B过的防御时间区间和A国的防御时间长度。然后A会发射若干导弹打向B国,B也会发射一下导弹,当一个导弹打到一个国家时如果碰到这在防御那么就会将导弹反弹会敌方。求何时开启A国的防御系统受到的伤害最小。分析:A国想要防御住一个导弹一定是要覆盖这个导弹原创 2016-09-24 20:02:22 · 1245 阅读 · 0 评论