码迷,mamicode.com
首页 >  
搜索关键字:树状    ( 5251个结果
hdu 5372 Segment Game(树状数组)
题目链接:hdu 5372 Segment Game 因为线段长度是递增的,不会出现后面的线段被前面的线段完全覆盖,所以只要分别计算[1,l-1]之间有多少个左端点,[1,r]之间有多少个右端点,想减即可。 #include #include #include using namespace std; const int maxn = 2 * 1e5 + 5; #def...
分类:编程语言   时间:2015-08-12 23:38:53    阅读次数:142
poj 2299 Ultra-QuickSort(树状数组求逆序数+离散化)
树状数组,具体的说是 离散化+树状数组。这也是学习树状数组的第一题. 算法的大体流程就是: 1.先对输入的数组离散化,使得各个元素比较接近,而不是离散的, 2.接着,运用树状数组的标准操作来累计数组的逆序数。 算法详细解释: 1.解释为什么要有离散的这么一个过程?     刚开始以为999.999.999这么一个数字,对于int存储类型来说是足够了。...
分类:编程语言   时间:2015-08-12 19:29:01    阅读次数:136
Hdu 5372 Segment Game (树状数组)
题目链接: Hdu 5372 Segment Game题目描述: 有一段区间,对这段区间有两种操作。1:插入操作,第i次插入长度为i的线段,并询问被当前线段完全覆盖的线段数目。 2:删除操作,删除第b次插入的线段。解题思路: 对于当前新插入线段,只需要统计已...
分类:编程语言   时间:2015-08-12 18:59:36    阅读次数:168
HDU 5372 线段树
给出两种操作: 第i个0:在x位置插入一个长度为i的线段,并输出该线段共覆盖了多少之前加入的线段 1:删除第i次插入的线段 官方题解:对于新插入的线段,查询有多少个线段左端点大于等于该线段的左端点。 再查询有多少个线段的右端点大于该线段右端点, 两者之差就是答案。用两个树状数组搞定。时间复杂度nlog 思路很好理解,直接用一个线段树记录区间的左端点和右端点即可 #include ...
分类:其他好文   时间:2015-08-12 17:01:05    阅读次数:123
hdu5372(2015多校7)--Segment Game(树状数组)
题目链接:点击打开链接 题目大意:存在一个横轴,有n此操作,0代表在横轴上新增加一条边,1代表删除1条边,其中0 x代表在从x位置开始增加一条边,当第i次加边时,边的长度为i,1 x代表删除第x次加的边。问每当新加入一条边是,这条边能完整的包含几条边。 为什么当时没做这个题,,,已经泪奔,,, 问的是新加的那条边能覆盖多少条边,统计已加入的边的左端点大于或等于新边左端点的个数x,统计已加入的...
分类:编程语言   时间:2015-08-12 16:56:13    阅读次数:108
【树状数组】
问题的提出:是否可以用线性数据结构的方法解决动态统计子树权和的问题呢?有的,树状数组。假设当前数组为a[],元素个数为n。1. 子区间的权和数组为sum,那么数组a[]中 i 到 j这段区间的数组元素和为sum[i,j]=a[k]的累加 【k属于(i->j)】2. 现在定义前缀和数组s[],s[i]...
分类:编程语言   时间:2015-08-12 16:41:20    阅读次数:132
hdu 5372 Segment Game(树状数组+离散化)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=5372 题意:有两种操作,输入a b,①a==0,插入第i条线段[b,b+i],输出[b,b+i]内有多少条完全包含于[b,b+i]的线段②a==1,删除插入的第b条线段。 分析:由于插入的线段长度是递增的,那么就不存在包含[b,b+i]的线段。那么完全包含于[b,b+i]的线段的数目=右端点小于等于b...
分类:编程语言   时间:2015-08-12 14:46:05    阅读次数:156
Segment Game (hdu 5372 树状数组+离散化)
题意:两种操作,添加线段和删除线段,第i次添加时告诉线段起点并且要添加长度为i的线段,删除第i次添加的线段,问每次添加后有多少线段是落在当前要画的线段内部的。 思路:因为每次画的线段的长度是递增的,所以当前画的线段不可能被其他线段包含,那么统计小于左端点的点的个数x和小于等于右端点的点的个数y,ans=y-x。分别用树状数组维护,没写过树状数组了,都忘了,又复习了一下。...
分类:编程语言   时间:2015-08-12 11:36:48    阅读次数:121
hdu 5372 Segment Game 【 树状数组 】
给出一些操作,0是将第i次增加的线段放在b位置,第i次放的线段的长度为i1是将第b次增加操作放的线段删除每次增加操作完之后,询问这条线段上面的完整的线段的条数每次询问统计比这条线段左端点大的线段的条数 L,比这条线段右端点大的线段的条数 R,两个相减就是完整的线段的条数另外因为给的b很大,所以需要离...
分类:编程语言   时间:2015-08-12 10:10:31    阅读次数:149
hdu 1166 敌兵布阵——(区间和)树状数组
这就是一个区间求和问题,可以用树状数组来做: 在此之前,需要了解一下按位与运算符——&;计算的规则是,仅当两个数都为真,则结果为真。 例如 90&45==8——————因为 在二进制中 0101 1010 (90) & 0010 1101(45)== 0000 1000 (8) 附 1: 负数在计算机中的存储方式:以补码存放,即对负...
分类:编程语言   时间:2015-08-12 09:00:35    阅读次数:137
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!