
poj
demo
这个作者很懒,什么都没留下…
展开
-
catalan数(poj1095)
这题个人感觉算是递归的经典吧!这里给出一个这题的解题报告链接,个人感觉已经写得很好了。http://blog.youkuaiyun.com/lvlu911/archive/2010/03/28/5425974.aspx提示大家要注意的几点是要紧紧抓住递归方程的定义,这句:递归函数fun(n,k)。即打印出拥有n个结点树的第k种状态。可能大家对这句话不是怎么理解:对于s,该树的左子树编号为(s-1)/L[n-i-1]+1,右子树编号为(s-1)% L[n-i-1]+1我个人的理解是把状态数s先看成L[n-i-1]进制的数原创 2011-03-13 15:49:00 · 751 阅读 · 0 评论 -
poj1275(差分约束系统)
1.思路 没什么好讲的,刘汝佳的书《算法艺术与信息学竞赛》讲得很好,不过对于初次接触差分约束系统的人来讲还是很费解,可以去参考《算法导论》,里面有很详细的约束图的构建过程。这里讲一下我的个人理解。s[i]为从0至i时刻雇佣的人数,t[i]为i时刻应聘的人数,r[i]为i至(原创 2011-08-14 16:19:52 · 999 阅读 · 0 评论 -
poj1639最小度限制生成树(kruscal+邻接表)
一、.思路设限制结点为des. 1. 求去掉des的最小生成树,此时求出来的是最小生成森林 2.添加des到各连通分量的边,当然取最小的边。 3.此时得到m度的生成树,我们要求的是小于等于k度的最小生成树,此时我们可以用来调整的边只有k-m条,注意我们不一定要原创 2011-08-13 11:51:35 · 687 阅读 · 0 评论 -
poj1523(割点)
1.思路参考刘汝佳的算法艺术与信息学竞赛。2.代码。#include#includeusing namespace std;// freopen("data.in","r",stdin);#include#define N 1005bool G[N][N原创 2011-08-12 17:30:54 · 615 阅读 · 0 评论 -
poj1459(网络流)
昨天学的最高标号预流推进 没看别人代码敲的,后来有一个BUG,参考了一下别人的代码:http://www.cnblogs.com/Open_Source/archive/2010/08/03/1904898.html能参考的资料太少了,基本上是连蒙带猜写的代码,还好之前原创 2011-08-11 17:30:59 · 640 阅读 · 0 评论 -
poj1149(pigs)
一、.这么犀利的建图第一次见到,不解释。就用这个题写一下模板。参考资料:http://imlazy.ycool.com/post.2059102.html二、代码1.(dinic+邻接表)#include #include#include#include原创 2011-09-05 11:36:58 · 503 阅读 · 0 评论 -
poj2135(最小费用最大流)
1.思路:题目要求求出两条路径,一条正向另一条反向,并且边不走重复,因此可以转换为费用流的模型,i至j有边(无向)拆成4条边,边的容量分别至1或0因此可以保证每条边至多走一次。再建立源s,汇t,另w(s,1)=w(n-2,t)=2;w(,1,s)=w(t,n-2)=0;c(s原创 2011-08-12 14:50:09 · 896 阅读 · 0 评论 -
poj1191(记忆化搜索)
1.这题的经典之处感觉不在记忆化搜索,而是在区域化的预处理,之前就碰到过好多这样的题目了。s[x1,y1,x2,y2]表示从(x1,y1)到(x2,y2)的面积,可以转换为s[x2,y2]-s[x1-1,y2]-s[x1,y2-1]+s[x1-1][y1-1];其中s[x2,原创 2011-08-04 14:04:29 · 679 阅读 · 0 评论 -
poj1077(A*,IDA*)
1.资料请参考刘汝佳的黑书,组合数学。2.A*实现(先贴代码,以后再补)#include#include#include#include#includeusing namespace std;int p[9]= {1,1,2,6,24,120,720原创 2011-08-03 15:14:00 · 2005 阅读 · 0 评论 -
poj1691(状态压缩,树型DP)
1.先说下我自己的思路:根据题目的特点:题目要求先刷上方的矩形,因此可以用图结构来描述这种约束,若A在B的下方,则连接A到B的有向边。然后可以把当前可以刷的最上层的顶点做为状态curState,times[curState]表示在状态curState下的最少刷的次数,则在状态cu原创 2011-08-02 17:49:27 · 952 阅读 · 0 评论 -
poj1038(状态压缩)
1.资料请参考刘汝佳黑书139页,注意行和列是反的,还有Qi=Pi-1(Pi>0) ,Qi=0 (Pi=0)这个转移是在不考虑当前行的芯片放置的转移,还有3种情况的描述好像有问题,最后是和队友一同讨论形成自己的思路,其实这三种情况大家自己去考虑一下应该也是好理解的。2原创 2011-07-30 11:49:31 · 1393 阅读 · 0 评论 -
poj2406(kmp,后缀数组)
开始是用后缀数组做的,RMQ果断超了内存,全部改用unsigned short结果又超时,后来参考了论文里的方法。 关键思想是设k为最小重复字符串的长度,则s[0,1……n-k-1]=s[k,k+1……n-1],即lcp(rank[0],rank[k])=n-k;由于0位置是原创 2011-07-27 12:50:47 · 1100 阅读 · 0 评论 -
poj2774(后缀数组)
花了近三天的时间终于差不多把后缀数组攻下了,汗啊!参考的资料:1.国家集训队2004许智磊的论文《后缀 数 组》2.国家集训队2009年罗穗骞的论文《后缀数组——处理字符串的有力工具》3.byvoid大牛空间的文章《最长公共子串问题的后缀数组解法》链接:http://www.by原创 2011-07-26 16:36:24 · 1551 阅读 · 0 评论 -
poj1226(kmp算法,后缀数组)
1.kmp解法算法及流程请参考matrix67博文:时间关系先附代码,不解释#include#include#include#includeusing namespace std;#define N 110int next[N]= {-1};string原创 2011-07-22 21:37:29 · 738 阅读 · 0 评论 -
poj1325
这个题的巧妙之处在于构图,将问题转换为二分图的最小顶点覆盖(最大匹配)!然后还有个tricker:At the beginning they are both work at mode_0.没过的朋友们仔细揣摩一下吧!#include #include#includeusing namespace std;int n,m,k;bool mat[110][110]原创 2011-06-07 20:36:00 · 637 阅读 · 0 评论 -
poj3277(线段树+离散化+扫描线+测度)
一、.思路:有三种方法1.插入时延迟更新(我自己的做法),效率还不错,应该是最大最小值的剪枝的作用吧,呵呵! 2.插入时精确覆盖,查询时向下记录最大值,一直查询到叶子结点3.扫描线+测度在线段树的结点里增加n,m,n表示线段数量,m表示这个区间的有原创 2011-09-02 20:07:34 · 860 阅读 · 0 评论