组合模式(Composite):将对象组合成树的结构以表示部分-整体的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。
树可能有无数的分支,只有反复使用Composite就可以实现树状结构了。在Component中声明所有用来管理子对象的方法,其中包括Add,Remove方法,这样实现Component接口的所有子类都具备Add,Remove方法。这样做的好处就是叶结点和枝节点相...
分类:
编程语言 时间:
2015-05-14 12:14:18
阅读次数:
140
1. linux系统下的文件是级层试树状目录结构,最上层是 / (即根目录)2.linux下的各种主要文件:root :存放root用户的相关文件 home:存放普通用户的相关文件 bin :存放常用(普通的)的命令的文件 sbin:存放具有一定权限才可以使用的命令的文件 ...
分类:
系统相关 时间:
2015-05-14 00:49:37
阅读次数:
189
题目大意:
有两排的城市,一排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
题目大意:
给你一个包含N个整数的序列,只能通过交换相邻的数字,最终变为升序顺序,问:最少需要多少次交换。
思路:
其实就是问冒泡排序的交换次数。其实就是求原序列的逆序数。用归并排序、线段树、树状数组都可以做。
但是如果用线段树和树状数组来做的话,因为元素个数是500000,但是元素值范围却是999999999,需
要先离散化。这里用间接排序的方法。用一个数组Arr[]存放原序列的值,另一个数组Id[]存放原序列编号
(1~N),对Id[]按Arr[]元素值的从大到小排序,得到Arr[]数组元素的相对大小...
分类:
编程语言 时间:
2015-05-13 16:50:31
阅读次数:
141
题目大意:
按顺序给你N颗星星的坐标,y是从小到大给出的。每个星星有一个等级,该等级为它左下角的星星
的个数。求每个等级的点有多少个。
思路:
因为y是从小到大给出的,那么可以直接忽略y,只记录x,求出(x,y)左边有多少个点就可以了。
用Ans[]数组表示每个等级的星星数。求(x,y)左边有多少个点用树状数组来做,每给一个点,就求出
x左边的点个数。作为Ans数组下标,累加个数,最后输出Ans[]数组。...
分类:
编程语言 时间:
2015-05-13 14:49:00
阅读次数:
137
题意:
查询区间和,重复的数字只计算一遍
思路:
先离线读入所有区间,然后按照区间右端点从小到大排序。
从数组的第一个数开始,依次修改bit直到每个区间的右端点,然后bit求区间和。
修改方式:用一个map记录当前数字是否已经出现过以及出现过的上一个位置,然后将该位置改为0,并更新一下map即可。
(因为一旦出现重复数字,其实只有该区间中的最后一个数字是起作用的,在他之前的都应该忽略,...
分类:
编程语言 时间:
2015-05-13 13:01:11
阅读次数:
112
题意:
这和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
题目大意:
给定一个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
分析:该題可以用线段树做,也可以用树状数组做;感觉树状数组容易一些,这里就用树状数组了。这里保存字符数组的下标从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
题目链接:点击打开链接
题意:
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