自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一点一点的进步

  • 博客(19)
  • 资源 (4)
  • 收藏
  • 关注

原创 POJ 1436 Horizontally Visible Segments 线段树

题目大意是,给出了很多条平行于y轴的线段,然后定义,两条线段能互相‘看见’的条件是,两条线段能由一条水平线连接,且这条水平线不能跟其他的所有线段有交点。而题目要求的是,3个线段能互相看见,这个条件下有多少组不同的。然后就能明显的感觉到是区间覆盖问题了。但是有一个细节问题,就是中间的水平线不一定经过整点,所以即使这个区间的所有点都被覆盖,也不能说其就不能穿过一条线,于是,可以将所有线段的长度

2012-02-28 21:56:51 1097 1

原创 POJ 3225 Help with Intervals 线段树

这是道比较经典的线段树    详情可以参考http://www.notonlysuccess.com/index.php/segment-tree-complete/ sha崽大神的bolg但需要注意的就是区间到点的转化了。 要保证转化后的区间满足集合的基本性质,比如删除一些区间后相应的点被删除,有可能会点删除完了,区间却还有,这就不符合了。所以就要把每个点乘以二之类的,还有一些细节,注意

2012-02-28 18:06:52 745

原创 HDU 4069 Squiggly Sudoku DLX

这是昨天周赛的题,我竟然不会怎么判断多解,后来一google,卧槽,我想复杂了。。。。。。直接看能搜出来几次就行了。这题就是个变形,先floodfill一下,然后就是模板了然后发现比大华的快了好几倍,然后加了输入挂后,瞬间成Best solution中的rank1了/*ID: sdj22251PROG: inflateLANG: C++*/#include #inclu

2012-02-27 12:44:47 879

原创 CF #109 div2 D题 Colliders

这道题应该算是简单题了。不过我写的太暴力,超时了。。。参考了别人的想法,先用最暴力的筛法,把每个数最小的质因子记录下来。然后开10W个set,每次操作,如果要插入一个数x,如果没有冲突,往里加的时候,对每个他的质因子p,将x插入set[p]中,判断冲突的方法也类似,对每个他的质因子,如果质因子的set不为空,说明有冲突,将set中的第一个元素输出即可,然后删除操作的时候则是set自带的eras

2012-02-25 12:58:37 730

原创 树形DP 加分二叉树 and HDU 1520 Anniversary party

题目描述设一个n个节点的二叉树tree的中序遍历为(l,2,3,…,n),其中数字1,2,3,…,n为节点编号。每个节点都有一个分数(均为正整数),记第j个节点的分数为di,tree及它的每个子树都有一个加分,任一棵子树subtree(也包含tree本身)的加分计算方法如下:subtree的左子树的加分× subtree的右子树的加分+subtree的根的分数若某个子树为主,规定其

2012-02-19 15:12:38 1320

原创 POJ 1325 Machine Schedule 最小点覆盖

机器A的所有模式为左部顶点,机器B的所有模式为右部顶点,然后A与B之间的每条连线代表一个任务或工作之后就要完成所有的任务,即将每条边都覆盖对一个有向图,若要覆盖每条边,至少需要的点数为二分图最大匹配数 建图的方法还是拆点。代码如下/*ID: sdj22251PROG: inflateLANG: C++*/#include #include #include

2012-02-19 13:39:12 737

原创 POJ 2084 卡特兰数

卡特兰数百科名片卡特兰数又称卡塔兰数,是组合数学中一个常出现在各种计数问题中出现的数列。由以比利时的数学家欧仁·查理·卡塔兰 (1814–1894)命名。原理  令h(1)=1,h(2)=1,catalan数满足递归式:  h(n)= h(1)*h(n-1)+h(2)*h(n-2) + ... + h(n-1)

2012-02-15 12:31:02 3607

原创 POJ 1222 EXTENDED LIGHTS OUT 枚举 || 高斯消元

题目大意就不说了,就是把棋盘上的1全变0即可如果枚举的话,看似有2的30次方中可能,其实不是。实际上只需要枚举第一行的状态即可,再往后,如果想要解决问题,必须根据第一行的状态推下去。对于每个位置,如果上一行的这一列有1,必然这个按键要按下去,不然不可能达到要求的结果。枚举代码如下,直接使用二进制枚举/*ID: sdj22251PROG: subsetLANG: C++*

2012-02-09 21:19:49 1112

原创 POJ 3067 Japan 二维树状数组

是一个比较不错的题目。题目大意是,在一张地图上,西边从上到下均匀排了一列点,东边也是这样,然后给出若干个边,都是从西边的点连到东边的点上。问最后这些边的交点,所谓交点,就是两个边交叉得到的交点,如果交点在结点上,是不算数的。首先思考一下基本做法,很容易想到,跟某条边相交的边数,跟其在东边和西边的编号有关系。然后就发现,如果某条边在西边的编号大于这条边,并且东边的编号小于这条边,就会出现交叉

2012-02-09 01:20:13 988

原创 POJ 1185 炮兵阵地 状态压缩DP

http://hi.baidu.com/brabt_king/blog/item/38396a8ad00b9414c8fc7a2f.html比较好的解题报告大概如此了。不过没有提供代码。代码参考了http://www.chenyajun.com/2010/02/20/4511哎,羞愧,还是参考了才做出来的。这种先预处理可能状态,然后再枚举的思想是重要的。根据题目中的条件,每行的状态实际

2012-02-08 21:26:48 1150

原创 POJ 1010 1020 DFS+剪枝

之所以要写这两题的解题报告,原因就是这两题是比较好的搜索题,必须记录一下。另外,最近做题状态也不行,看见题目后没想法,然后看别人解题报告了,突然发现自己想过这方面,但是没深入去想,然后就做不出来了。1.POJ 1010  题意晦涩难懂。从网上找了一个稍微能说清楚的题意 题意:  给出n种邮票,每种邮票有自己的面值(面值可能重复)  指定m种“总面值”,对每种“总面值”,

2012-02-08 00:36:58 2536

原创 POJ 3349 Snowflake Snow Snowflakes hash表

题目大意是给出n组序列,判断其中是否有同构的同构的定义是,若一个序列中,从某个位置往左读,到头后从最后边接着往左读到起点,或者同理往右读,能够跟另一个序列一样,就表示两个序列是同构的。那么,由于n是巨大的,常用的做法就是哈希表了将序列映射成某个值,然后判断。由于序列中存在一些较大的值,使得哈希的难度增大,这里我们采用的方法是,先使用一个比较容易想出来的哈希操作,然后对于哈希值相同的

2012-02-07 17:21:29 853

原创 POJ 1422 Air Raid 最小路径覆盖(二分图匹配)

一个PXP的有向图中,路径覆盖就是在图中找一些路径,使之覆盖了图中的所有顶点,且任何一个顶点有且只有一条路径与之关联;(如果把这些路径中的每条路径从它的起始点走到它的终点,那么恰好可以经过图中的每个顶点一次且仅一次);如果不考虑图中存在回路,那么每条路径就是一个弱连通子集.  由上面可以得出:  1.一个单独的顶点是一条路径;  2.如果存在一路径p1,p2,.

2012-02-07 16:02:05 913

原创 POJ 2155 Matrix 二维树状数组

又是一道树状数组的题目,而且是一道二维的好题题目要求是,一些操作,可能是对某个矩阵内的所有值取反,可能是问的是某个位置的值如图假如我们要把B矩阵的所有值都取反,我们只需要操纵矩阵的四个顶点即可,更新左下角顶点的值增1相当于把区域ABCD的变换次数增1,左上角顶点的值增1,相当于区域AC的变换次数增1,右上角顶点的值增1,相当于区域C的变换次数增1,右下角顶点的值增1,相当于区域

2012-02-05 21:55:50 749

原创 POJ 2411 Mondriaan's Dream 状态压缩DP

第一次看状态压缩DP啊。题目大意是给出一个 h*w 的空棋盘,1题目的数据规模很小,棋盘的每个格子有覆盖和未覆盖两种,正好对应二进制中的 1 和 0 。所以可以用一个二进制数表示一行棋盘的状态,这称之为状态压缩,然后对其进行相应的位运算,表示相应的操作。然后参考了http://www.cppblog.com/sdfond/archive/2011/03/17/91761.html

2012-02-05 19:40:11 888

原创 POJ 1151 Atlantis 矩形切割 || 线段树 扫描线

这道题的题意就是给出一些矩形,问这些矩形覆盖的面积,也就是矩形可能是相交的这道题由于数据量很小,所以可以按照将输入的坐标排序的方法进行分割矩形如下面的代码/*ID: sdj22251PROG: subsetLANG: C++*/#include #include #include #include #include #include #include #in

2012-02-05 16:56:12 1749

原创 POJ 1095 Trees Made to Order 递归

不得不说这是一道非常之好的递归题目首先,要知道节点数为n的二叉树的种类是卡特兰数具体解题报告见http://blog.csdn.net/lvlu911/article/details/5425974

2012-02-05 15:15:17 944

原创 POJ 1716 Integer Intervals SPFA 差分约束

用数组dist[i]表示从点0到点i-1所包含的关键点的数目;输入数据即可转化为:dist[b+1]-dist[a]>=2      =>    dist[a]-dist[b+1]根据实际情况还有两个约束条件:dist[i+1]-dist[i]dist[i+1]-dist[i]>=0    =>   dist[i]-dist[i]+1于是可以建图,SPFA。最后输出dist

2012-02-05 01:20:00 1047

原创 POJ 1077 Eight A*算法 IDA*算法 康拓展开

这道题是一道经典的搜索题第一次做A*算法的题目这道题需要知道的,第一是怎样把全排列转换为数字,第二是h函数的设计全排列转化为数字用到的是康托展开,跟逆序数有关,这是一个比较经典的转换。转换成数字的目的就是为了状态的判重,所以A*算法的空间需求总是指数级的h函数用的是曼哈顿距离的总和,然后f=g+h,g函数就是从初始状态到现在状态花费的步骤数了。然后使用优先队列,进行BFS。

2012-02-04 20:47:07 2807 1

归并排序实现

使用C++实现了归并排序,有注释,简明易懂

2013-06-11

堆排序实现

使用C++实现了堆排序,有注释,简明易懂

2013-06-11

插入排序实现

使用C++实现了插入排序,有注释,简明易懂

2013-06-11

java 俄罗斯方块源码

代码可直接运行, 主要功能有基本的俄罗斯方块,加速,开始,暂停等

2011-12-19

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除