2011年8月29日

hdu 1207

摘要: g[n]=min(g[n-k]+g[n-k]+f[k]) (1<=k<n)经典。 阅读全文

posted @ 2011-08-29 20:31 宇宙吾心 阅读(161) 评论(0) 推荐(0) 编辑

hdu 1733

摘要: A:增加源点src,和汇点dest,然后根据每个时间点建出分层图,每个时间对应一层,对于每层图的构造如下B:给每个格子标上号Xi, 由于每个格子一次只能占一人,所以把每个格子分为两个点xa,xb,连上容量为1的有向边,对于格子为‘X’的,(如果为第0层的话)在源点src与xa之间连一条容量为1的有向边,对于格子为'@'的点,在xb与汇点dest连上容量为1的有向边,对于每个格子,(除‘#’外),在xb与其上下左右及其本身的对应下一层图的xa连上容量为1 的一条有向边C:具体操作并不是一下子建出分层图,由于时间是未知的,所以枚举时间,做最大流,当最大流小于人数时,时间加一并在原图 阅读全文

posted @ 2011-08-29 20:00 宇宙吾心 阅读(295) 评论(0) 推荐(0) 编辑

hdu 3721

摘要: 题意:给一棵树,可以移动树上的一条边,必须保证移动之后的图还是一棵树,问如何移动才能使得移动之后的树的直径最短思路:枚举每条边,如果移除了这条边,会将这棵树分成两部分,新增加的边必须是连接这两个部分的边,这样才能保证新形成的是一棵树,那么这样对于两个部分分别求出这个部分上面的点,满足这个点是这个部分中到其余所有点的最长的距离最短的点,显然新增加的边要连接这两个点才能使得新形成的树的直径最短那么问题就变成了给定一棵树,求出一个满足上述条件的点了,其实只要先求出这棵树的直径,那么要求的点就一定是直径中心附近的那两个点之一了,证明如下:假设要求的点不是直径上面的点,那么由于原图是一棵树,取这个点到直 阅读全文

posted @ 2011-08-29 16:17 宇宙吾心 阅读(297) 评论(0) 推荐(0) 编辑

hdu 3666

摘要: log后变为差分约束 阅读全文

posted @ 2011-08-29 14:59 宇宙吾心 阅读(167) 评论(0) 推荐(0) 编辑

hdu 3594

摘要: /*判断强连通的图中每条边是不是只在一个环内*//*(1):如果有重边则NO(2):如果dfs时有一条后向边(u->v),怎把当前栈内的点一次退出,直到遇到v 然后把那些点的W[x]++;(v除外);表示形成了一个环*/ 阅读全文

posted @ 2011-08-29 14:37 宇宙吾心 阅读(187) 评论(0) 推荐(0) 编辑

hdu 3231

摘要: 差分约束的简化形式,拓扑排序。 阅读全文

posted @ 2011-08-29 13:43 宇宙吾心 阅读(244) 评论(0) 推荐(0) 编辑

导航