自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一点一点的进步

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

原创 POJ 2976 01分数规划

刚做完了最优比率生成树   就瞬间来了感觉了题目大意就 给定n个二元组(a,b),扔掉k个二元组,使得剩下的a元素之和与b元素之和的比率最大题目求的是 max(∑a[i] * x[i] / (b[i] * x[i]))   其中a,b都是一一对应的。 x[i]取0,1  并且 ∑x[i] = n - k;那么可以转化一下。  令r = ∑a[i] * x[i] / (b[i]

2012-04-23 20:51:26 1541

原创 POJ 2728 最优比率生成树 01分数规划问题

网上有一些很数学的证明方法,表示看的挺晕,自己理解了一下后,发表下自己的看法,如果有错误,再进行修改其实原题就是求 MIN( ∑CiXi / ∑DiXi ) Xi∈{0,1} ,对每个生成树,设其比率r=∑CiXi / ∑DiXi ,可得∑CiXi - ∑DiXi * r=0(条件1)那么对于所有的生成树,显然∑CiXi - ∑DiXi * min(r) >= 0,当 ∑CiX

2012-04-23 18:58:49 4858 2

原创 POJ 1470 LCA 公共祖先

裸题一个/*ID: CUGB-wwjPROG:LANG: C++*/#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #in

2012-04-21 10:57:09 917

原创 POJ 2874 LCA 树上任意两点距离

本题说了是无环图,所以就是一片森林了。 而对于树上的任意两点,我们可以用LCA求其距离。距离为两个子节点到根的距离和减去最近祖先到根的距离的2倍。具体画图便可看出来。  并且图是无向图,所以LCA时需要进行标记POJ 1986同这道题 基本一样/*ID: CUGB-wwjPROG:LANG: C++*/#include #include #include #incl

2012-04-21 09:51:37 5526

原创 POJ 3233 矩阵快速幂

其实就是考擦构造矩阵。 我瞎构造也能构造出来我构造的矩阵是Let B = A    A              0     I然后看discuss里这么构造了一个矩阵Let B=   A    I                 0     I   B^(k+1) =    A^k         I+A+...+A^k

2012-04-16 18:20:38 1063

原创 POJ 1087 A Plug for UNIX 最大流

看完题以后就觉得是个最大流了。然后脑子不太清醒,想了一会儿才发现建图好简单啊,不过中间理解错题意了,题目中说有K种适配器,也就是说每种适配器的数量是无限个的,而我理解成了K个适配器了。。。 然后就WA了几次。。。建图:  加一个超级源点, 超级汇点。 源点与每个电器相连,容量为1,每个电器与其相应的插座相连,容量为1,插座之间能转化的就连一条无限容量的边,最后每个插座跟汇点相连,容量为这种

2012-04-16 17:29:38 1056

原创 HDU 2121 无固定根的最小树形图

参考了http://blog.csdn.net/wsniyufang/article/details/6747604本题为不是固定根的最小树形图,我们可以虚拟出一根来,然后在把这个根跟每个点相连,相连的点可以设为无穷大,或者设为所有边和大一点,比如为r,然后就可以利用最小树形图进行计算了,计算出的结果减去r,如果比r还大就可以认为通过这个虚拟节点我们连过原图中两个点,即原图是不连通的,

2012-04-14 02:00:42 1271

原创 POJ 3164 最小树形图 朱刘算法

参考了芳哥的博文 http://blog.csdn.net/wsniyufang/article/details/6747392说一下自己的理解。最开始的图,把所有的最小入边都累加到ret里。至于为什么,因为这样才能保证所得的ret有可能是最小树形图的解,当然,是在这些最小入边集合不行成环得情况下。如果有了环,ret肯定不是最终答案,因为环中间有的边需要删掉,而且环之间也要连接起来。现

2012-04-14 01:17:56 14366 4

原创 HDU 1823 二维线段树

题意就不赘述了。二维线段树,第一维是高度,第二维是活泼值, 然后建立树套树。/*ID: CUGB-wwjPROG:LANG: C++*/#include #include #include #include #include #include #include #include #include #include #include #incl

2012-04-13 20:33:30 1126

原创 HDU 3609 高次幂取模

题意不再赘述具体运用见初等数论/*ID: CUGB-wwjPROG:LANG: C++*/#include #include #include #include #include #include #include #include #include #include #include #include #include #include

2012-04-13 12:04:08 922

原创 HDU 3607 线段树+DP

这题最裸的方法因该是O(n2)的。dp[i]=max(dp[j])+gi(1hj) 其中dp[i]代表的是前i下能拿的最多的钱。 但这个数据范围有点大,是10W 之多。 在hi > hj这个限制下,我们可以联想到,不就是找比hi小的高度中能获得的最多的钱的那个状态么,再由数据范围,容易联想到用线段树优化这个过程。那么就先把所有的高度都离散化,然后每次先进行查询,将比hi小的高度中钱最多的状态找出,

2012-04-13 10:31:17 818

原创 HDU 3605 Escape 最大流

题目大意不再赘述,很容易看出来是最大流,只不过人比较多,有100W个,所以需要进行压缩,可以看到m是比较小的,非常容易就能联想到2进制,所以就压缩成了1024个节点,每个结点有一个值,代表有多少人是这个状态,然后建立超级源点, 超级汇点,源点与1024个结点连线,边权为结点的值,然后每个源点再与m个星球进行连线,边权为无限大,然后每个星球再与汇点进行连线,值为该星球的容纳量。/*

2012-04-13 10:21:14 1222

原创 POJ 3436 最大流

很羞愧啊 , 题都没看咋懂翻译见:http://hi.baidu.com/lewutian/blog/item/1b0709220085b7fed7cae28b.html/cmtid/87a1a0ad1aebe6064b36d60e题解参考了:http://zhyu.me/acm/poj-3436.html ,BUPT一位现役神牛的blog每台机器分输入输出,很显然直接拆点,每

2012-04-11 21:01:26 979

原创 HDU 3991 最短路+最小路径覆盖

题目大意就是,有一个图,上面有一些顶点,代表一些城市,在某些时刻, 某个城市里会有人需要礼物, 哈利波特需要及时的将礼物送到,但是哈利每1秒只能走一个单位长度,所以他需要朋友的帮助,来使所有的人都能及时的收到礼物。问需要的最少的朋友个数。那么看完题目后,实际上可以发现其跟路径覆盖非常有关系,因为是一些人走一些路径来将礼物送到。所以要先将任意两点间的最短路求好。然后枚举任意两个任务,

2012-04-10 22:43:57 741

原创 HDU 3988 数论

考察的知识点很简单,就是分解质因数,和求出阶乘内某个质因子的个数。分解完质因子后,记录下每个质因子的个数,然后计算阶乘内该因子的个数,所有的求完后即可得到答案/*ID: CUGB-wwjPROG:LANG: C++*/#include #include #include #include #include #include #include #include #i

2012-04-10 22:36:47 1066

原创 HDU 3987 最小割模型

读完题后,就知道是最小割了,最小割=最大流,但是题目又说要最少边的最小割,输出边的个数这样建边得时候就要换种方式了,将边权w变为w *(E + 1) + 1,这时候求出的最大流实际上附带了一个信息,就是边的个数,最后的结果直接mod (E+1 )即可/*ID: CUGB-wwjPROG:LANG: C++*/#include #include #include

2012-04-10 22:34:18 992

原创 HDU 3986 最短路+枚举

这题HDU 1595 find the longest of the shortest 就是一模一样的但是出现了重边,就比较恶心人了然后就将输入的数据先排序,然后出现重边的肯定在一块,然后对每条边存储的是它最短的情况和次短的情况即可/*ID: CUGB-wwjPROG:LANG: C++*/#include #include #include #include #

2012-04-10 22:30:26 912

原创 POJ 3020 最小边覆盖

题目大意就是有一些'o'和'*'构成的图,每个*可以与其四周的'*'连一条边,但是连完之后这两个‘*’就称作被覆盖了,不能与其他的'*'发生交集了。 然后问用最少的边能把所有的‘*’都覆盖掉看到是两两连边不由得想起二分图匹配,实际上就是用最少的边覆盖所有的点的问题,我觉得最小边覆盖实际上就是最小路径覆盖的一个特殊情况,只不过要求必须是二分图才行而最小路径覆盖只要是PxP的有向图就行。 而他

2012-04-10 09:52:55 2399

原创 HDU 3938 Portal 并查集

给一个无向图,求有多少个点对,使得两点间的路径上的花费小于L,这里路径上的花费是这样规定的,a、b两点之间所有的路径中的最大边的最小值。   当然题目上不是这么写的。它问的是有多少种路径,这里就比较模糊了,到底两个路径怎样才算是两种路径呢,这时候重新看题,可以发现,如果理解为路径中经过的点不同的话,题目中给的所谓两点间的花费这个定义就没有意义了,所以就可以猜测,题目要求的是有多少个点对了。

2012-04-09 00:05:18 1752

原创 POJ 1466 Girls and Boys 最大独立集 二分图匹配

大意就是有n个人,每个人与其他的某几个人有关系,这个关系且称为浪漫关系,然后最后求一个最大的集合,使得集合中所有的人两两之间都不存在浪漫关系。看到之后就可以发现,这是一道非常明显的最大独立集的问题,可以转化为二分图来做,还是最经典的拆点建图,然后根据定理,最大独立集=顶点数-最小点覆盖数。  而对于这道题来说,我们可以发现这个浪漫关系是相互的。而我们的建图中,按理来说应该是一边是男

2012-04-04 21:57:41 1818

原创 POJ 3321 apple tree 树状数组

题目大意,就是给出一棵树,可能有很多叉,然后每个叉上长一个苹果,有两种操作,第一种是C ,意思就是change,如果这个叉上有苹果,就摘掉,如果没有,就长一个。另一种操作是Q,意思就是询问,问的是某个结点及其子树上的苹果有多少个。这是很明显的区间求和问题,用树状数组来很方便,关键是这个是树形的结构,所以必须先把树映射出来,也就是相当于把数据离散化了,这里就要先进行一次DFS了,开两

2012-04-04 17:02:32 1221 1

原创 POJ 1840 Eps 简单Hash

a1x13+ a2x23+ a3x33+ a4x43+ a5x53=0  对于这个等式,给出了a1到a5,最后求有多少组X1---X5满足这个等式,其中所有的Xi都是不能等于0的。然后每个Xi的范围是-50到50。这个数据范围是能hash的保证。分成两组,前3个X是一组,后两个一组。/*ID: sdj22251PROG: LANG: C++*/#include

2012-04-03 14:04:46 1058

归并排序实现

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

2013-06-11

堆排序实现

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

2013-06-11

插入排序实现

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

2013-06-11

java 俄罗斯方块源码

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

2011-12-19

空空如也

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

TA关注的人

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