自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

新博客地址:sensirly.github.io

新博客地址:sensirly.github.io

  • 博客(81)
  • 资源 (10)
  • 收藏
  • 关注

转载 Winning the Netflix Prize: A Summary

Posted by Edwin Chen  Oct 24th, 2011How was the Netflix Prize won? I went through a lot of the Netflix Prize papers a couple years ago, so I’ll try to give an overview of the techniques that

2013-03-31 12:48:49 1350

原创 积性函数(poj1845 poj2480 hdu2879 )

定义:对于正整数n的一个算术函数 f(n),若f(1)=1,且当a,b互质时f(ab)=f(a)f(b),在数论上就称它为积性函数。若对于某积性函数 f(n) ,就算a, b不互质,也有f(ab)=f(a)f(b),则称它为完全积性的性质:积性函数的值完全由质数的幂决定常见积性函数:   φ(n) -欧拉函数,计算与n互质的正整数之数目  μ(n)

2012-10-22 17:32:23 1365

原创 Road Repairs(CF 240E)

题目链接:http://codeforces.com/problemset/problem/240/E题意:一个五万个点和五万条边的图,每条边的边权为1或0,问以1为根的最小树形图,并输出方案。解法:传统最小树形图的复杂度为VE,但此图边权比较特殊,最小树形图的定义为除根节点外每个点都有入边,根节点有出边,且无环。因此可以首先使用边权为0的边为每个点找一条入边,对于仍然没有入度的点再使用边

2012-10-17 22:42:49 1016 2

原创 极大极小搜索α-β剪枝(poj 1568)

极大极小搜索:     A和B对弈,轮到A走棋了,那么我们会遍历A的每一个可能走棋方法,然后对于前面A的每一个走棋方法,遍历B的每一个走棋方法,然后接着遍历A的每一个走棋方法,如此下去,直到得到确定的结果或者达到了搜索深度的限制。当达到了搜索深度限制,此时无法判断结局如何,一般都是根据当前局面的形式,给出一个得分,计算得分的方法被称为评价函数,不同游戏的评价函数差别很大,需要很好的设计。

2012-10-05 15:38:35 3844

原创 poj 4007 \ hdu 4127 Flood-it!

题意:一个n*n的矩阵,每次将左上角元素染色,则所有与它连通(两元素连通的条件是有公共边)的元素都被染为相同颜色,问至少需要多少次操作使得所有元素颜色相同解法:明显的ida*,估价函数为当前矩阵元素的种类数减一,如果每次向外扩展状态时都暴力枚举会tle,因为很多状态是无用的(即不会使连通块扩大),因此用一个vis数组记录每个元素的状态,1代表已与左上角元素连通(无需扩展),2代表不与左上角连通

2012-10-04 16:03:10 1242

原创 poj 3460 Booksort(IDA*)

题目大意:有N(1 ≤ N ≤ 15)本书,每本与每本的高度都不一样。现在可以按照以下的办法整理书:抽出一摞书,再保持原来的顺序插进一个位置。这样的话我们称之为“一次操作”。现在你需要求出至少需要经过几次操作才能让书变成按高度升序的状态。如果需要5次或者多于5次,只需要输出“5 or more”。解法:IDA*是一种特殊的dfs,每次dfs都设置一个阀值,一旦解的深度超出阀值就回溯。只不过ID

2012-10-03 19:36:32 905

原创 fzu 2045 \ hdu 3973 AC's String(线段树+RK)

题意:给出10000个模式串和一个长度为100000的匹配串,有两种操作:1.查询匹配串的子串[L,R]是否存在于模式串中2.修改匹配串某个位置的字符解法:由于RK函数满足区间加法啊,因此可以用线段树动态维护和查询某个子串的hash值,得到子串的hash值,剩下的就是普通的rk了。将所有模式串的hash值放入map中,对于hash值相同的模式串使用链表串联起来,当获取某个子串的

2012-09-28 16:25:02 1254

原创 差分序列(poj 2914 Angry Teacher & poj 2515 Birthday Cake)

poj 2515 Birthday Cake题意:给出m和n,求Sigma(i^m)   0解法:最裸的差分序列,根据性质3,只需求得第0条对角线的n+1个值即可。import java.io.OutputStreamWriter;import java.io.PrintWriter;import java.math.BigInteger;import java.util.Sca

2012-09-26 16:14:05 1955

原创 Fibonacci数列

通项式:F(n) = (((1+Sqrt(5))/2)^n – ((1-Sqrt(5))/2)^n)*1/Sqrt(5)递推式:F0 = 0, F1 = 1, and Fn = F(n − 1) + F(n − 2) [定理1]标准Fibonacci序列(即f(0)=0,f(1)=1)当N大于1时,一定有f(N)和f(N-1)互质[定理2]若i为奇数, f(i)*f(i)=f(i-1)

2012-09-25 10:43:55 1035

原创 hdu 4419 Colourful Rectangle(矩形面积并)

题意:给出红绿蓝三种颜色的矩形,某些元素重叠之后会组合成其它颜色,问7种颜色的面积分别为多少。解法:考虑只有两种颜色AB,那么求A颜色矩形的面积并x,B颜色矩形的面积并为y,AB颜色矩形的面积并为z,则最终,AB颜色的面积为x+y-z,A颜色的面积为x-(x+y-z),B颜色的面积为y-(x+y-z);类似得,考虑三种颜色:根据公式先求出三种颜色混和的面积x,然后依次只考虑两种

2012-09-23 16:03:33 2388

原创 hdu 4411 Arrest(费用流)

题意:有N+1个点,每个点与编号大于自己的点之间有一条有权边(权重通过floyd求得),现有k个人位于0处,要从k个人中选出若干个人遍历其它点并最终回到0点,使每个点(除0外)都被访问恰好一次,问最小费用之和为多少解法:每个点之多走一次,显然需要把一个点拆成两个,一个出点一个入点之间费用为0流量为1,超级源点拆为流量为k费用为距离的边,但如何让保证每个点都恰好走过一次呢?由于原图无环,所以可以

2012-09-23 15:45:52 3295

原创 Pólya计数小结

Burnside引理:记C(f)为在置换f下保持不变的着色方案的个数,那么本质不同的着色方案数位所有置换f的C(f)值的平均数。如果求给定置换C(f)的方法为“一次判断每个着色方案是否在该置换下不变”由于每个方案包含p个“格子”的颜色信息,考察每个方案的复杂度为O(p),考察所有n种着色方案的复杂度为O(np),由于有s种置换方案,因此时间复杂度为O(nsp).Polya定理:

2012-09-19 15:55:31 1590

原创 poj 3241 Object Clustering(曼哈顿最小生成树)

题意:给出n个点,先要将n个点分为k个集合,要求对于每一个元素,都能在同一集合内找到至少一个元素满足两者之间的曼哈顿距离小于X,问最小的x是多少解法:显然是求最小生成树上第k长的边,由于是完全图,因此要充分利用曼哈顿距离的特点求解。定理:可以证明每一个顶点在最小生成树中在这45度的范围内至多仅有一条边与之相连。    仔细分析这一性质,我们猜想,这一条边是否一定是这个顶点在这一方向上的

2012-09-17 20:01:30 1229 3

原创 hdu 4297 One and One Story(维护森林中的LCA)

题意:有n个房间,每个房间有且只有一条出边指向另一个房间,现给出两个人在两个房间,问让他俩汇合要走的最少的路径数解法:观察图的形态,由于n个点n条边,且每个点出度为1,因此可以认为是一个森林,森林里每棵树都加了一条边形成了一个环,且环是根节点(可以认为缩点后没有出边,即没有父节点)。显然两点属于不同树的时候不可达;因为图的特殊性,因此没有用强连通做,而是用了并查集判环,也便于给环上每个点标

2012-09-16 19:05:17 2341

原创 哈密顿路问题

对于一个图中是否存在一条哈密顿路,没有可靠的充分必要条件(貌似邻接矩阵恒式可以?),因此求哈密顿路是一个NP问题,一般要使用搜索和状压dp求解,但汉密尔顿回路的存在有许多充分条件,即当图满足某些特定性质的时候,汉密尔顿回路一定存在,而且可以根据一些算法构造出来。1.Dirac定理:设一个无向图中有 N 个节点,若所有节点的度数都大于等于 N/2,则汉密尔顿回路一定存在。(“N/2” 中的除

2012-09-14 15:33:07 3411

原创 中国邮递员问题CPP

问题描述:Chinese poster-man  problem,简称CPP,给出一张连通图,问经过每条边至少一次且起点和终点相同,所需走的最小路程。无向图CPP1.考虑当所有点度数均为偶数时,该图是欧拉图,因此任意一条欧拉回路都是答案2.当有两个点是奇度点的时候,只需找到这两点间的最短路径,将最短路径上的边计入到原图中,这是得到了一张欧拉图(poj 1237 The Postal W

2012-09-13 18:02:50 4629

原创 poj 3921/hdu 2485 Destroying the bus stations(最短路而非网络流费用流)

题意:给出一张有向图,每条边长度均为1,问至少删掉几个点,使得从1到n的最短路径长度大于k(长度小于等于k的不相交路径数目)第一种可以AC的做法:先求一次最短路,对于d[1][i]+d[i][n]>k的点一定是不需要去除的,然后对于剩下的点,求至少删掉多少个点使其不连通,典型的有向图点连通度问题,拆点求最小割即可,但是过不了这组数据:8 10 51 22 33 44 55

2012-09-12 20:41:16 1294

原创 消圈法解最小费用流(poj 2175 Evacuation Plan)

消圈算法: 先求最大流, 再在Gf中寻找负费用圈并沿它增广改进: 增加附加弧(s, t), 费用大于s-t最大费用路(如VC), 弧上的初始流大于s-t最大流(如s出发的弧容量和加1)消圈算法将让尽量多的流移出附加弧, 因此得到的流是最大流. 最后附加弧可能有余量,应当忽略实际效果: 最小费用增广路算法, 因为Gf中任何s-t路和t-s一定构成负费用圈最坏情况分析: 每次找负费用圈

2012-09-11 10:04:46 3393

原创 平面图网络流(poj 2822 & hdu 4280 )

对于10^5个点10^6条边的网络流,一般做法无法高效解决,如果所有边都是双向边且网络能构成一个平面图,则可以通过求解对偶图的最短路求解,复杂度为O(M*log(M)),转化方法类似于《平面图S-T最小割》,详见http://blog.csdn.net/kksleric/article/details/7863279与S-T最小割平面图较规则不同,难点在于将一张图的块求出。大体分如下几步进行:

2012-09-10 15:13:24 2286 9

原创 2012长春网络赛(hdu4267 hdu4268 hdu4274 hdu4276 hdu4277)

hdu 4267 A Simple Problem With Integers题意:数列更新,每次更新区间[a,b]内a 解法:由于k较小,因此可以按k不同分别维护更新,最后累计更新量,对于一个固定的k,由于是等距更新,同一次更新中影响的点的下标除k的余数相同,因此按照余数将点归类就变成了更新连续区间,查询点的值,开一个10*10的树状数组的数组,tree[i][j]表示下标除i余j的点在

2012-09-08 18:23:17 5496 3

原创 sgu 438 The Glorious Karlutka River =)(动态网络流)

题意:m个人在一条宽度为w的河的南岸,现在要到对岸,已知河中有n块石头,每块石头同时只能容纳ci个人,每个人一次都可以跳向距离为d的距离,每次跳跃耗时为1,问m个人全部过河所要花费的最少时间。解法:不难看出此题具有网络流的各个因素。源-南岸,汇-北岸,中间点-石头,边-距离小于d的石头之间的连线,费用-1,但是m个人可以分多次过河且可以在中间节点停留,因此不可用费用流解法。由于不同时刻两点之间

2012-09-07 16:37:18 1179

原创 hdu 3225 Flowers Placement(字典序第k小的完美匹配)

题意:用n个元素填满一个m行n列的矩阵,使得每行和每列中每个元素仅出现一次,现要再添加一行,使得矩阵仍满足上述限制,问字典序第k大的方案是什么.解法:错误的解法是填k次,每次填最小的,若仍存在解则第k次的填充方案就是字典序第k小的,例如原有1234,第一次填2143第二次填3412不死后第二小的。朴素的做法的dfs全排列然后验证,这样显然复杂度太高,于是考虑利用二分匹配剪枝:当递归到第i层

2012-09-05 11:56:25 918

原创 spoj 3196 Divisibility Relation(最大独立集输出方案)

题意:给出200个数,选出最大的子集,使得子集中的数相互不整除。解法:将可以整除的点连边,看上去像是个无向图最大独立集,通过求最大团的办法求解复杂度hold不住。于是观察图的特点,由于整除是一种偏序关系,因此构成的是一个有向无环图,因此也是个二分图(二分图的一个充分必要条件是无奇圈),于是可以转化为求解二分图的最大独立集。具体做法Matrix67给出了证明过程,这篇文章里有http://blo

2012-09-04 20:49:13 1057 1

原创 CF#136

A. Little Elephant and Problem题意:给出一个数组,问是否是由一个已排序的数组经过交换至多一对数得到。解法:将给定的数组排序后与元数组比较,若有多于两个位置不同则不是,否则将原数组两个位置的数字交换后比较是否与排序后数组相同。B. Little Elephant and Array题意:给出一个数组,问某个自区间内有多少个x出现了x次。解法:

2012-09-02 20:08:22 658

原创 hdu 4358 Boring counting

题意:给出一棵树,每个点有一个点权,问一x为根的子树中有多少种权重恰好出现了k次。懒了,直接贴题解,况且本来也不是自己写出来的#include #include #include #include#includeusing namespace std;const int maxn = 100010;struct node { int be, ne; void

2012-09-02 19:52:20 997

原创 spoj 861 SWAPS & uva 11990 "Dynamic'' Inversion(动态维护逆序对)

题意:有150000个数,10000条操作,每次将第i个数变为x,讯问每次操作后逆序对的数目。解法1:树状数组+treap,树状数组的每个元素都是一棵树,这样可以在lognlogn时间内查询前i项有多少个小于等于k的元素,当某个元素法师改变时,只需从树状数组中对应的treap中进行元素的删减,每次修改前后统计的第i个元素形成的逆序对数,便可知每次操作后逆序对的数目。由于Treap常熟很

2012-08-31 16:35:16 2104

原创 poj 2843 Cutting Cake

题意:一块N*N大的蛋糕M次讯问,每次切走一个矩形,问每次切的矩形被分成了多少块(1 解法:显然是求某个区域内的连通分量数目,由于这个区域内的元素在访问后会被切除,因此每个元素只被访问一次,因此可以通过dfs或bfs求得某个区域内的连通分量的个数,均摊复杂度。但是每次寻找遍历的起始点(即区域内未被切走的蛋糕)复杂度为O(N^2),因此需要优化,最坏情况是怎么产生的呢?当某个区域内有连续的已

2012-08-30 16:26:13 718

原创 poj 3467 Cross Counting

题意:给出一个M*N 的矩阵,矩阵中每个元素都有一种颜色(1 ≤ N, M, C ≤ 100),10000条查询,更改某个元素的颜色或查询某种颜色的corss有多少个。We say there exists a cross of size k centered at the cell (x,y)iff all cells lying in the x-th row or the y

2012-08-30 16:11:04 796

原创 hdu 4262 Juggler(树状数组)

题意:某人手上有一串珠子,顺时针编号1--n,每次可进行三种操作:顺时针旋转一个珠子,逆时针旋转一个珠子,将手中的珠子移去(移去后顺时针方向下一个珠子进入手中),问按标号12345顺序将所有珠子逐一移去,最少需要多少次操作。分析:假设当前要移除的珠子为x,x左边的珠子用A代表,右边的珠子用B代表即AxB,则无论左移还是右移都会得到xBA,即移去某个珠子对后面的珠子无影响,每次只需单独考虑A和B

2012-08-26 20:52:21 726

原创 DLX解决3-SAT问题

1.关于DLX的重复覆盖:根据与精确覆盖概念的区别可知,只需改变remove()和resume()函数控制删除和恢复的过程即可实现,对于求解最少步数问题,可借助ida*中的h()函数优化。2.重复覆盖+精确覆盖:某些元素可重复覆盖(目标),而某些元素只能精确覆盖(每类元素只能使用一次),这是要对前m列进行重复覆盖的删除回复操作,对后面的列进行精确覆盖的操作,也有一些特殊情况可直接使用重复覆盖代

2012-08-26 16:27:25 1427 1

原创 hdu 4391 Paint The Wall(根N分段哈希)

将整个区间分为sqrt(n)段小区间,每个段长度为sqrt(n),并维护每一段的统计量,这样可以在sqrt(n)时间内完成一次区间查询或更新。平衡查询和更新之间矛盾是数据结构设计时的重要考虑因素,而这种做法是经典的平衡做法,早就了解,但以前没有遇到过只能用“分段”解决的题目,因此总觉着这是迫不得已的“赖招”,也从来没有写过,昨天第一次写,小细节没注意,结果悲剧的写成每次查询O(n)了。总结一下错误

2012-08-24 14:43:32 1588

原创 DLX精确覆盖解数独问题

关于Dancing Links的介绍最好仔细阅读一下Knuth的论文,那篇翻译的文章也不错,这位仁兄的 博客比较易懂http://blog.csdn.net/sunny606/article/details/7833551通过阅读论文主要有如下几点体会:1.精确覆盖的最基本模型是:在一个01矩阵中选择若干个行,使得没列都包含且仅包含一个12.Dangcing links的逻辑与

2012-08-23 10:16:26 2068

原创 CF(173E) Camping Groups

题目链接题意:一个俱乐部有 n名成员,每名成员有两个属性:声望r和年纪a(均为109)。若干个个可以组成一个小组,每个小组中有一名组长,要求这名组长的声望高于其他成员且这名组长与组内任意成员的年龄差小于k,先给出10000条查询,问如果a、b两人在一个小组中,那么这个小组最多可以有多少人。解法:1.由于n和a相差很大,因此首先要对声望和年纪进行离散化          2.每个小组

2012-08-20 12:22:43 847

原创 poj 2793 Cactus(无向仙人掌图判定)

有向Cactus图:1.它是一个强连通图。2.它的任意一条边都属于且仅属于一个环。有向Cactus图判定:性质1 有向Cactus的DFS树没有横向边(不等价于非父子边)。性质2 low(u)是v的儿子)性质3 设某个点v有a(v)个儿子的low值小于dfn(v),同时v自己有b(v)条逆向边。那么a(v)+b(v)。这三条性质也就是一个有向图是有向Cactus的充要条

2012-08-15 19:01:32 2744

原创 hdu 3873 Invade the Mars(自写堆优化Dijkstra)

题意:以城市1为出发点,城市n为目的地,有若干条限制:要首先攻占城市a才能攻占城市b,问攻占城市n所需的最短时间。从源点到任意一点的最短路受两个条件的限制:一是源点到自己的最短路,而是源点到限制点的最短路,即限制点最短路f[c] = Math.max(f[c], d[a]);最短路d[c] = Math.max(d[c], f[c]);因此要确定所有限制点的最短路后才能使用该点松弛其它顶点

2012-08-14 10:12:14 736

原创 平面图ST最小割(hdu 3870)

对于平面图有如下性质:1.(欧拉公式)如果一个连通的平面图有n个点,m条边和f个面,那么f=m-n+22. 每个平面图G都有一个与其对偶的平面图G*3. G*中的每个点对应G中的一个面4.对于G中的每条边e,e属于两个面f1、f2,加入边(f1*,f2*)。如果e只属于一个面f,加入回边(f*,f*)。平面图G与其对偶图G*之间 关系:1.   G的面数等于G*的点数,

2012-08-14 09:58:37 1878

原创 poj 2890 Matrix Multiplication

题意:对一个对焦线元素为1、k*k的01矩阵在布尔运算的意义下进行2006次幂运算(k解法:由于是布尔意义下的运算,k次矩阵乘相当于长度为k的路径个数,由于2006>k,因此可以看做求一个图的传递闭包。可以首先强连通分量缩点,记录每个强连通分量中的点数,在缩点后的图G ‘上对每个点进行一次dfs,求出此连通分量能到达多少个点,累加每个强连通得到总共有多少条路径。import java.

2012-08-12 23:05:09 647

原创 poj 2942 Knights of the Round Table

题意:在一张无向图中,问有多少个点不属于任意一个奇圈,孤立点不属于奇圈首先明确两个定理:定理1:对于一个点双连通分量,如果找个一个奇圈那么这个分量的其他点也必然在某个奇圈内。   证明很简单,设ab是一个奇圈上的点,c不属于这个奇圈,设c到a和边数为m到b的边数为n,若m+n为奇数,则c位于由这个奇环除ab外的其他边(偶数条)构成一个奇环,如果m+n为偶数,那么c到ab的路径与ab边构

2012-08-12 09:31:21 524

原创 边双连通分量

关于桥与双连通分支的定义及求法void大神给出了很详尽的介绍图的割点、桥与双连通分支总结几条做题过程中发现的关于边双连通分量的性质:1.将图中每个边连通分量缩为一个点后,只连端点不位于同一连通分量中的边,则将图转换成了一棵树,且树中的边都是父子边。2.在对图进行搜索时,图中的边分为父子边和返祖边(交叉边),则一个具有n个点的边连通分量中有且仅有n-1条父子边,且可由着n-1以条

2012-08-12 09:12:37 1106

原创 Hdu3947 流量等式建图

此题是以《NOI2008志愿者招募》为背景的,预做此题需要先体会《志愿者招募》的思想只不过由线性结构变为树形结构,但是问题的本质没有变,都是一个元素影响连续的若干个位置,构图的本质都是使每个变量x出现分别以+和-的形式出现在两个恒等式中,由此可以看做x变量从+式流入-式流出。设药品为x,为每条河建立一个等式,则x出现在了u的父边到v的父边路径上的所有等式中,因此用每个点的父边减去所有孩子的边(

2012-08-08 21:55:25 2452

有向cactus判定的证明

有向cactus判定的证明,一个有向图是有向Cactus的三个充要条件。

2012-08-15

2012ACMICPC世界总决赛题目

2012 ACMICPC world final 世界总决赛题目 2012年5月17日 波兰华沙

2012-05-17

数据结构 课程设计 BfsDFs图形化界面

数据结构课程设计 bfs dfs 图形化界面,支持图的编辑但单步执行。java实现

2012-03-09

数据结构课程设计 哈希散列 图形界面

提供hash表开性寻址的查找插入删除操作,图形化界面。java实现

2012-03-09

二分思想及其应用

二分思想及二分思想的两个应用: 二分搜索及简单变形,二分答案的两种使用环境

2012-03-08

箱子排序BInSort图形界面演示(JAVA)

数据结构 课程设计 箱子排序 图形界面演示,支持单步演示

2012-02-17

AVL树操作图形界面

数据结构课程设计 图像化界面演示AVL树的插入、删除、查找操作,支持旋转的单步和自动演示

2012-02-16

acm南开教程

南开教程,包含基础篇,提高篇,经典题目列表及解析。

2011-12-07

第二届山东省acm省赛题目

第二届山东省acm省赛题目 共十题;比赛地点:山东大学软件园校区

2011-10-26

java实现p2p文件传输

使用javaSE 实现的p2p 文件传输系统

2011-04-17

空空如也

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

TA关注的人

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