
线段树
木木木木子子子
这个作者很懒,什么都没留下…
展开
-
hdu1166 敌兵布阵 线段树
#include <iostream>using namespace std;int t,n,as[50005],cas=1,first,last,num,sum[50005<<2];void pushup(int rt){ sum[rt]=sum[rt<<1]+sum[rt<<1|1];}void buildtree(int...原创 2018-03-15 20:30:23 · 138 阅读 · 0 评论 -
pku 2777Count Color 线段树 懒惰标记 位运算(位或)
懒惰标记这个知识点 可以参考 http://blog.youkuaiyun.com/weizhuwyzc000/article/details/50445710最主要的是位运算 利用位或(只要对应的二个二进位有一个为1时,结果位就为1) 比如111 表示这个区间红黄蓝都有 则另一个区间就可以用101 表示只有红蓝 利用位或就可以让父节点 为111 表示这个区间三个颜色都有。 这种用二进制表示的方法 既能够表...原创 2018-03-16 21:26:04 · 152 阅读 · 0 评论 -
POJ 2299 Ultra-QuickSort 树状数组/归并排序 求逆序数
1.为什么最小交换次数是求数组的逆序数?比如91054 9作为最大,它肯定要沉到最后面,所以肯定要交换4次 并且9的逆序数 (9,1)(9,0)(9,5)(9,4) 正好是4, 同时9沉下去后,其他数字的相对位置没有改变,同样的道理一个数有多少个逆序数就要交换多少次,所以肯定要交换的次数就是最小交换次数就是这些逆序数的和。2.如何求数组逆序数?1.归并排序时顺便记录一下逆序数的个数 void...原创 2018-03-18 16:26:51 · 245 阅读 · 0 评论 -
pku2352 Stars 线段树
http://poj.org/problem?id=23521.没有注意读题 已经给好y的顺序排列,不用自己再sort了2.在使用qsort(a+1,num,sizeof(a[1]),cmp)要注意sizeof(a[1]) 还有cmp 要将const void*a 转换成 结构体先 再比较A.x B.x;3.一直TE;最后发现要读入x后要x++,这样子计算会比较快,就不用算最开始的x了,因为...原创 2018-03-19 18:42:09 · 153 阅读 · 0 评论 -
hdu1394 Minimum Inversion Number 线段树
首先是题目:找出几个序列的逆序数,并输出其中最小的逆序数。线段树:读入第n个数,树的叶子代表的是——在n之前读入的数的出现 ,比如当读入1时 ,在此之前已经读入了2 ,则树的第二个叶子就设置为1 (1表示出现过,开始初始化为0),在此之前已经读入了3,则树的第三个叶子就设置为1。树的父节点就是统计区间的和 。利用query(n)统计有多少个比n小的数出现过 。最基础的线段树是记录数列的值,求其和。...原创 2018-03-16 20:33:17 · 257 阅读 · 0 评论 -
hash +线段树 HDU 3973 AC's String
本题使用字符串的Hash来解决。将一个字符串看成是一个P进制的数字(可以联想10进制数),那么可以知道每一个字符串都可以被唯一表示(P> 256, 并不考虑高精度)。可是由于字符串的长度比较大,那么我们无法保存如此大的数字。于是使用Hash mod2^64来作为Hash.(的却可能会冲突,可是冲突的概率趋于无穷小)然后就是Hash(s,P) = s[0]*P^(Len-1) + s[1] *...转载 2018-05-01 16:19:08 · 180 阅读 · 0 评论