树状数组
文章平均质量分 61
KetchupZ
退役acmer一名,CCPC银+ICPC铜(欢迎大家访问我的Github地址:https://github.com/LieLieLiekey)
展开
-
1194E. Count The Rectangles(树状数组,离线扫描线)
#1194E. Count The Rectangles(树状数组,离线扫描线)题目链接:传送门思路:首先看数据范围,n≤5000n\le5000n≤5000,我们首先处理出所有水平线段和垂直线段,然后将水平线段从低到高排序。我们从低到高处理每条水平线段(计算出以该水平线段为底的矩形的数量)。假设现在是第 iii 条水平线段,首先我们O(n)O(n)O(n) 处理出所有与该线段相交的垂直...原创 2019-11-02 16:09:44 · 260 阅读 · 0 评论 -
P2163 [SHOI2007]园丁的烦恼(离线,树状数组二维数点)
P2163 [SHOI2007]园丁的烦恼(离线,树状数组二维数点)题目链接:[传送门](<https://www.luogu.org/problem/P2163)输入格式第一行有两个整数n,m(0≤n≤500000,1≤m≤500000)。n代表皇家花园的树木的总数,m代表骑士们询问的次数。文件接下来的n行,每行都有两个整数xi,yi,代表第i棵树的坐标(0≤xi,yi≤10000...原创 2019-09-25 10:09:17 · 441 阅读 · 0 评论 -
计算区间不同数的和(离线+树状数组)
计算区间不同数的和(离线+树状数组)题目传送门:牛客练习赛52-B:Galahad题意:给一个长度为n的数组,有q次询问,每次询问一个区间[l,r][l,r][l,r] ,问这个区间的和,但如果某一个数在这个区间出现了多次,这个数只能被计算一次。思路:题目中只有修改操作,所以我们可以离线处理。我们让所有查询按右端点从小到大排序。对于每个区间将未添加的原数组元素设为w[p...原创 2019-09-15 11:50:29 · 549 阅读 · 0 评论 -
洛谷P2487 [SDOI2011]拦截导弹(cdq分治+dp)
洛谷P2487 [SDOI2011]拦截导弹(cdq分治+dp)题目链接:传送门思路: 这个其实就是求三维偏序的最长子序列,且求出每个三元组在所有最长子序列中的出现次数。其中第一维是导弹出现的顺序。我们先写下dp方程,fls[i]fls[i]fls[i]为第 i 个元素结尾的最长子序列的长度,fkind[i]fkind[i]fkind[i]为第 i 个元素结尾的最长子序列的方法数。容易写...原创 2019-09-13 14:14:56 · 437 阅读 · 0 评论 -
HDU 6681(树状数组统计平面内射线的交点个数)
HDU 6681(树状数组,统计平面内射线的交点个数)题目链接:传送门题意:给出k条射线,求射线将n∗mn*mn∗m 的区域分成几个联通块。每两条射线的端点x坐标和y坐标都互不相同。思路:根据 欧拉公式 可以推导出联通块的个数等于射线的焦点个数c+1。但其实赛场上根本不知道这个定理,但有个很明显的道理,对于每条竖线,每条横着的射线与该竖线相交都会使联通块个数+1.(注意因为题目限制,这个射线...原创 2019-08-20 13:20:50 · 330 阅读 · 0 评论 -
zzuli2520 大小接近的点对(CCPC河南省省赛) 离线处理+DFS遍历树+树状数组
zzuli2520: 大小接近的点对(CCPC河南省省赛) 离线处理+DFS遍历树+树状数组思路: 我们可以利用DFSDFSDFS序,统计子树中与该节点权值相差为kkk的个数,这个范围是一个区间。DFSDFSDFS序遍历树,进入一个节点的时候记录符合条件的个数记作cntfcntfcntf,然后树状数组添加该节点信息,DFSDFSDFS遍历儿子即可。(注意,遍历过程中不撤销节点信息)离开该...原创 2019-04-19 14:24:36 · 257 阅读 · 0 评论 -
JVasya and a Tree (树状数组+离线处理)
J - Vasya and a Tree (树状数组+离线处理)CodeForces - 1076E 题意: 给定有n个点的一棵树,顶点1为根。m次操作,每次都把以v为根,深度dep以内的子树中所有的顶点(包括v本身)加x。求出最后每个点的值为多少思路: 离线处理+树状数组。其中树状数组维护当前深度区间信息。 (终于知道什么是离线查询) 我们可以DFSDFSDFS序遍历以111...原创 2019-04-18 20:39:59 · 258 阅读 · 0 评论 -
二维树状数组更块查点
二维树状数组更块查点在此不给予证明,但是证明很简单。二维树状数组成块更新,查定点的值。我们以一维的推广,我们可不可以成块更新转化为修改一些点的值,然后求点的值转化统计一块的和?我们可以构造一个M矩阵,让M矩阵初始化为0,我们可以让坐标(x,y)的值等于以(1,1)和(x,y)组成的M子矩阵的元素之和(你看看,这个条件在刚开始的时候是成立的),我们更新以(x1,y1)和(x2,y2)组成...原创 2019-04-27 21:06:05 · 140 阅读 · 0 评论 -
树状数组基础总结
树状数组总结入门博文:http://www.cnblogs.com/acgoto/p/8583952.html树状数组与线段树的思想的一些相同与不同。共同点:同时一个节点维护多个叶子节点的信息不同点:线段树节点采用二分的规则,而树状数组节点利用了bit位的性质来锁定管理的叶子节点,且树状数组只能直接查询1~i区间的信息,而线段树可以直接查询[l,r][l,r][l,r] 区间信息,树状数...原创 2019-04-15 11:30:03 · 142 阅读 · 0 评论 -
80-th Level Archeology(前缀和,区间交集)
I - 80-th Level Archeology(前缀和,区间交集)CodeForces - 731D 题意: 给出n个串,一共有c中字母编号为1-c。然后描述每一个串。每一次可以使得所有串的所有字母编号+1(编号为c的变成1).问最少多少次吼能够使得所有的串按照字典序递增思路: 我们只要保证相邻的两个串都递增即可。对于每两个串,我们求出假设我们旋转k次就可以使得着两个串递增。其...原创 2019-04-17 20:40:50 · 514 阅读 · 0 评论 -
CodeForces - 629D
I - 80-th Level ArcheologyCodeForces - 731D 题意: 有n个蛋糕,从1编号到n,现在用这些蛋糕制作一个大蛋糕,要求编号大的蛋糕必须放在编号小的蛋糕上面,且上面的蛋糕的体积必须严格大于下面蛋糕的体积,问能制作出的大蛋糕的最大体积思路: 每次找出面积比他小的堆起来的最大蛋糕面积即可。找的过程可以将所有面积离散化,然后用树状数组查找(线段树,map...原创 2019-04-17 15:50:10 · 274 阅读 · 0 评论 -
KiKi's K-Number (树状数组)
KiKi’s K-Number (树状数组)HDU - 2852 题意:题意:题目给定三种操作: 0 x 表示把x插入容器 ; 1 x 表示删除一个x如果没有x则输出 No Elment! ; 2 a k 表示比a大的数中的第k大的数 如果没有输出No Find!思路: 树状数组维护元素出现次数前缀和即可。操作0即修改;操作1先查询x是否存在,如果存在删除一个即可。操作2...原创 2019-04-16 21:23:01 · 337 阅读 · 0 评论 -
F - Disharmony Trees(树状数组)
F - Disharmony TreesHDU - 3015 题意: 对于n棵树,给出所在位置和高度,根据给出的规则算出每棵树的位置等级xlevxlevxlev和高度等级hlevhlevhlev然后,定义f=两树之间的位置的那估计的绝对值,s=两树中最小的高度等级,求所有树之间f*s和。思路: 预处理把所有的树重新构造距离和高度熟属性,我们让所有树按照树的高度从高到低排序,那么每次...原创 2019-04-16 12:14:54 · 244 阅读 · 0 评论 -
E - Apple Tree(DFS序,树状数组)
E - Apple TreePOJ - 3321 题意: 一颗苹果树,刚开始所有节点都有苹果,有以下两种操作,一种是改变一个节点的状态(有苹果就取走,没苹果就产生一个),一种是询问一个点的子树(包括节点自己)一共有多少个苹果,对于每次询问输出结果分析:重新DFS序给节点标号,那么没个节点的子孙就对应一个连续的区间。那么修改点的状态相当于单点修改,查询操作相当于区间求和,树状数组和线段树...原创 2019-04-15 21:40:08 · 261 阅读 · 0 评论 -
C - Mobile phones(二维树状数组 单点更新 矩阵求和)
C - Mobile phones(二维树状数组)POJ - 1195 题意:对一个n∗nn*nn∗n的矩阵进行一些操作和查询,操作:单点修改。查询:求子矩阵元素和思路: 真没想到二维的树状数组是这样的。(真不知道二维线段树应该怎么维护,期待(☆▽☆)! )构建二维树状数组之后我们可以求i,ji,ji,j左上角矩阵的和 。求子矩阵可以转化为多个左上角矩阵元素和的加减。二维树状数组...原创 2019-04-15 21:39:34 · 246 阅读 · 0 评论