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

摘要:题目链接:hdu 6203 ping ping ping 题意: 给你一棵n+1个节点树,现在有q条路径不通,问你最少有多少个节点坏掉了。 题解: 考虑贪心,对这q条路径求一下lca,按照lca的深度从大到小排序。 然后for每条路径,看看x或者y是否在已经被禁止的子树里面,如果都不在,那么ans+ 阅读全文
posted @ 2017-10-17 21:02 bin_gege 阅读(285) 评论(0) 推荐(0)
摘要:题目链接:hdu 6200 mustedge mustedge mustedge 题意: 一开始给你一个有n个节点m条无向边的图,现在定义mustedge为u->v的路径上必须经过的边。 现在有q个操作: 1 x y x->y加条无向边 2 x y 查询x->y上有多少条mustedge。 题解: 阅读全文
posted @ 2017-10-17 19:52 bin_gege 阅读(240) 评论(0) 推荐(0)
摘要:题目链接:hdu 5517 Triple 题意: 有n个两元组A,有m个三元组B,然后set C有一个计算方式。 现在让你找set TOP的size。 题解: 理解题意后,显然对于每个b的分组,只有最大的a才有贡献, 然后就可以发现set B中每个元素按照e分组后,只会对应一个a,所以最多有1e5个 阅读全文
posted @ 2017-09-13 21:14 bin_gege 阅读(137) 评论(0) 推荐(0)
摘要:题目链接:poj 2464 Brownie Points II 题意: 题意很迷啊。 有一些点,Stan选择某个点,经过这个点画一条竖线,Ollie选择一个经过这条直接的点画了条横线。 Stan选一,三象限的点,Ollie选二、四象限的点。 Stan的策略是,自己画一条竖线之后,Ollie有很多种选 阅读全文
posted @ 2017-08-23 20:56 bin_gege 阅读(142) 评论(0) 推荐(0)
摘要:题目链接:hdu 6133 Army Formations 题意: 搞了一圈,最近就是让你输出每个点的答案,每个点的答案计算为将一该点为子树的全部的点的权值排序,求一下前缀和的前缀和。 题解: 由于是求前缀和的前缀和,考虑用树状数组,对于每插入一个数x,他的贡献为sum(x-1)+当前比他大的个数* 阅读全文
posted @ 2017-08-21 17:19 bin_gege 阅读(166) 评论(0) 推荐(0)
摘要:题目链接:hdu 6119 小小粉丝度度熊 题意: 给你n个区间,和一个数m,m表示可补上不连续的位置累计和为m,现在问你最长的连续区间和为多少。 题解: 我可能写的有点复杂,大概就是将每个区间排序后离散化,将这些间隔看成一个点,然后双指针一下。 1 #include<bits/stdc++.h> 阅读全文
posted @ 2017-08-13 18:39 bin_gege 阅读(160) 评论(0) 推荐(0)
摘要:题目链接:Codeforces Round #427 (Div. 2) C. Star sky 题意: 在一个二维平面上有n个星星,每个星星有一个初始的亮度,每过去一秒,星星的亮度变化为(s+1)%(c+1). 现在有q个询问,问t秒后一个矩形区域的星星的总亮度为多少。 题解: 由于c不大,将每颗星 阅读全文
posted @ 2017-08-01 23:38 bin_gege 阅读(312) 评论(0) 推荐(0)
摘要:题目链接:hdu 5741 Helter Skelter 题意: 给定一个二进制的字符串,有 M次询问 问是否存在含有 a个 0 ,b个 1的区间 题解: 我们可以n2处理出每个区间,然后我们可以发现每个区间是一个矩形。 现在问题就转换成了有多少个点在这些矩形内。 然后就可以离散化后扫描线一下。 1 阅读全文
posted @ 2017-07-20 00:06 bin_gege 阅读(169) 评论(0) 推荐(0)
摘要:题目链接:Codeforces Round #424 (Div. 2) E. Cards Sorting 题意: 将n个数放进一个队列,每次检查队首,看看是不是队列中最小的数,如果是就扔掉,如果不是就放到队尾。 这样直到队列为空,为需要操作多少次。 题解: 考虑用两个指针模拟,最开始now指针指向第 阅读全文
posted @ 2017-07-15 14:24 bin_gege 阅读(185) 评论(0) 推荐(0)
摘要:题目链接:Codeforces Round #401 (Div. 2) E. Hanoi Factory 题意: 给你n个环,每个环有内径a,外径b,高度v,现在让你将这n个环重起来,问你能重的最大高度。 满足条件:bi>=bj,bj>ai。(i<j) 题解: 首先将所以数据离散化,然后我们先按b从 阅读全文
posted @ 2017-02-26 11:34 bin_gege 阅读(177) 评论(0) 推荐(0)
摘要:题目链接:hdu 4125 Moles 题意: 给你n个数,让你按键值建一个平衡二叉树,然后奇数为0,偶数为1,然后可以遍历这颗树得到一个欧拉序列,现在给你一个串,问你出现了几次。 题解: 建树的时候要引用一个结论:就是新插入的数的父亲,要么是比它大的最小的那个元素,要么是比它小的最大的那个元素。 阅读全文
posted @ 2017-02-02 20:00 bin_gege 阅读(263) 评论(0) 推荐(0)
摘要:题目链接:hdu_4918_Query on the subtree 题意: 给出一颗n个点的树,每个点有一个权值,有两种操作,一种是将某个点的权值修改为v,另一种是查询距离点u不超过d的点的权值和。 题解: 这里可以去膜膜鸟神的博客。 简单来说就是对树的每个重心建立两个树状数组,然后对于每个点修改 阅读全文
posted @ 2016-12-02 13:25 bin_gege 阅读(585) 评论(0) 推荐(0)
摘要:题目链接:hdu_4742_Pinball Game 3D 题意: 给你n个点,让你求三维的LIS,并且求出有多少种组合能达到LIS。 题解: 求三维的LIS,典型的三维偏序问题,x排序,解决一维,cdq分治y,解决一维,树状数组维护z,解决一维。 注意,cdq中sort不要调用太多,不然会被卡常。 阅读全文
posted @ 2016-11-22 17:35 bin_gege 阅读(144) 评论(0) 推荐(0)
摘要:题目链接:hdu_5324_Boring Class 题意: 给出n个二维点对,求LIS长度和编号字典序最小的LIS(x非增,y非减) 题解: dp[i]=max(dp[j]) (i>j,l[i]>=l[j],r[i]<=r[i]) 一看就是三维偏序问题。 如果树套树写的好,空间开的大的话,一样可以 阅读全文
posted @ 2016-11-12 17:42 bin_gege 阅读(336) 评论(0) 推荐(0)
摘要:题目链接:hdu_5618_Jam's problem again 题意: 给你n个点,每个点有一个坐标(x,y,z),找出有ans个点,3个坐标都比该点小,这个点的level就为ans,然后让你输出所有点的ans. 题解: 对于第一维,直接排序,后面两维的处理可以用线段树套lowbit,但空间用的 阅读全文
posted @ 2016-11-10 21:10 bin_gege 阅读(240) 评论(0) 推荐(0)
摘要:题目链接:hdu_5788_Level Up 题意: 有一棵树,n个节点,每个节点有个能力值A[i],mid[i],mid的值为第i节点的子树的中位数(包括本身),现在让你将其中的一个节点的A值改为1e5,问所有的mid的和最大问多少。 题解: 我们可以知道,如果改变其中一个的A[i],如果A[i] 阅读全文
posted @ 2016-10-05 22:13 bin_gege 阅读(223) 评论(0) 推荐(0)
摘要:题目链接:hdu_5877_Weak Pair 题意: 给你一棵树,让你找有多少对满足那两个条件的weak pair 题解: 有人用Treap,我不会,然后我用树状数组+离散来替代Treap,用DFS搜到叶子,然后在树状数组中找小于k/a[u]的个数,注意a[u]可以为0,要处理一下 1 #incl 阅读全文
posted @ 2016-09-11 20:04 bin_gege 阅读(200) 评论(0) 推荐(0)
摘要:题目链接:hdu_5862_Counting Intersections 题意: 给你与坐标轴平行的线段,问你交点数 题解: 实质就是扫描线,这里我用树状数组来记录,所有线段按X坐标排序,遇到横线段的左端点就对应y坐标+1,遇到右端点,就对应y坐标-1,遇到竖线段,就询问对应的区间段 1 #incl 阅读全文
posted @ 2016-08-25 14:29 bin_gege 阅读(168) 评论(0) 推荐(0)
摘要:题目链接:hdu_5792_World is Exploding 题意: 给你一个数列,让你找有多少个(a,b,c,d)满足a≠b≠c≠d,1≤a<b≤n,1≤c<d≤n,Aa<Ab,Ac>Ad. 题解: 如果abcd可以相等,那么就是所有的顺序对和逆序对相乘,但这里要不相等,所以我们减去相等的情况 阅读全文
posted @ 2016-08-03 11:08 bin_gege 阅读(359) 评论(0) 推荐(0)
摘要:题目链接:hdu_5775_Bubble Sort 题意: 让你找每一个数在冒泡排序中最右边和最左边的位置的差值 题解: 还是官方题解,讲的已经很清楚了 1012 Bubble Sort 考虑一个位置上的数字c在冒泡排序过程的变化情况。c会被其后面比c小的数字各交换一次,之后c就会只向前移动。数组从 阅读全文
posted @ 2016-07-29 11:08 bin_gege 阅读(168) 评论(0) 推荐(0)