码迷,mamicode.com
首页 >  
搜索关键字:树状    ( 5251个结果
设计模式C++实现十五:组合模式
组合模式(Composite):将对象组合成树的结构以表示部分-整体的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。 树可能有无数的分支,只有反复使用Composite就可以实现树状结构了。在Component中声明所有用来管理子对象的方法,其中包括Add,Remove方法,这样实现Component接口的所有子类都具备Add,Remove方法。这样做的好处就是叶结点和枝节点相...
分类:编程语言   时间:2015-05-14 12:14:18    阅读次数:140
Linux下的文件操作命令
1. linux系统下的文件是级层试树状目录结构,最上层是 / (即根目录)2.linux下的各种主要文件:root :存放root用户的相关文件 home:存放普通用户的相关文件 bin :存放常用(普通的)的命令的文件 sbin:存放具有一定权限才可以使用的命令的文件 ...
分类:系统相关   时间:2015-05-14 00:49:37    阅读次数:189
POJ3067 Japan【树状数组】【逆序数】
题目大意: 有两排的城市,一排N个城市,编号为1~N,一排M个城市,编号为1~M。这两排城市之间有K条路。 路都是直线连接,问:这些路,有多少道路是相交的,并且焦点不是城市所在的点,求出交点个数。 思路: 树状数组的思想。参考网上的图,先将所有边(u,v)按u升序排列,如果u相同,则按v升序排列。可 以看出来,路(u1,v1)和路(u2,v2)如果有交点的话,u1 > u2 并且 v1 < v2,或者 u1 v2,为了不重复计算,忽略后一种情况。如果排序完之后,可以发现:结果就是...
分类:编程语言   时间:2015-05-13 23:17:10    阅读次数:165
POJ2299 Ultra-QuickSort【树状数组】【逆序数】
题目大意: 给你一个包含N个整数的序列,只能通过交换相邻的数字,最终变为升序顺序,问:最少需要多少次交换。 思路: 其实就是问冒泡排序的交换次数。其实就是求原序列的逆序数。用归并排序、线段树、树状数组都可以做。 但是如果用线段树和树状数组来做的话,因为元素个数是500000,但是元素值范围却是999999999,需 要先离散化。这里用间接排序的方法。用一个数组Arr[]存放原序列的值,另一个数组Id[]存放原序列编号 (1~N),对Id[]按Arr[]元素值的从大到小排序,得到Arr[]数组元素的相对大小...
分类:编程语言   时间:2015-05-13 16:50:31    阅读次数:141
HDU1541 Stars【树状数组】
题目大意: 按顺序给你N颗星星的坐标,y是从小到大给出的。每个星星有一个等级,该等级为它左下角的星星 的个数。求每个等级的点有多少个。 思路: 因为y是从小到大给出的,那么可以直接忽略y,只记录x,求出(x,y)左边有多少个点就可以了。 用Ans[]数组表示每个等级的星星数。求(x,y)左边有多少个点用树状数组来做,每给一个点,就求出 x左边的点个数。作为Ans数组下标,累加个数,最后输出Ans[]数组。...
分类:编程语言   时间:2015-05-13 14:49:00    阅读次数:137
hdu 3333 树状数组+离线处理
题意: 查询区间和,重复的数字只计算一遍 思路: 先离线读入所有区间,然后按照区间右端点从小到大排序。 从数组的第一个数开始,依次修改bit直到每个区间的右端点,然后bit求区间和。 修改方式:用一个map记录当前数字是否已经出现过以及出现过的上一个位置,然后将该位置改为0,并更新一下map即可。 (因为一旦出现重复数字,其实只有该区间中的最后一个数字是起作用的,在他之前的都应该忽略,...
分类:编程语言   时间:2015-05-13 13:01:11    阅读次数:112
hdu 3874 树状数组+离线处理
题意: 这和hdu 3333 根本就是一道题   链接:http://blog.csdn.net/u013382399/article/details/45689977 思路: 同hdu 3333   code: #include #include #include #include #include #include #include #include #include #includ...
分类:编程语言   时间:2015-05-13 12:56:59    阅读次数:107
HDU3584 Cube【树状数组】【三维】
题目大意: 给定一个N*N*N多维数据集A,其元素是0或是1。A[i,j,k]表示集合中第 i 行,第 j 列与第 k 层的值。 首先由A[i,j,k] = 0(1 <= i,j,k <= N)。 给定两个操作: 1:改变A[i,j,k]为!A[i,j,k]。 2:查询A[i,j,k]的值。 思路: 三维树状数组区间更新、单点查询。更新区间(a,b)时,在 a 和 b+1 处都加1,前边表示增加1,后边是 抵消加1操作,最后询问时,用Query(x) % 2 即为单点的值(0或1)。三维区间更新,要注意区...
分类:编程语言   时间:2015-05-13 12:51:36    阅读次数:187
HDU ACM 4046 Panda 线段树或者树状数组
分析:该題可以用线段树做,也可以用树状数组做;感觉树状数组容易一些,这里就用树状数组了。这里保存字符数组的下标从1开始,树状数组初始化从3开始,因为只有大于等于3使才可能有符合要求的字串出现,最终计算L到R区间的个数时要用getsum(R)-getsum(L+1),因为可能有符合要求的str[L-1],str[L],str[l+1]也被算进去了,实际上他并不在区间L到R内。更新时要注意三种情况,P...
分类:编程语言   时间:2015-05-13 10:42:28    阅读次数:173
HDU 5126 stars cdq分治+树状数组
题目链接:点击打开链接 题意: T个case n个操作 1、 (x,y,z) 在三维平面的点上增加1 2、询问区间范围内的权值和。 思路: cdq分治套cdq分治,然后套树状数组即可。。 #include #include #include #include #include #include #include #include #include #inc...
分类:编程语言   时间:2015-05-12 00:09:27    阅读次数:191
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!