Codeforces Beta Round #11 D. A Simple Task

题意:有N(最多19个)个点,M条边,问有多少个简单环。 状态压缩,dp[st][i],终点是i,st表示这个环走过哪几个,定义起点为这些走过的点里最小的。 #pragma comment(linker, "/STACK:102400000,102400000") #inc...

2013-09-07 01:53:26

阅读数:2316

评论数:0

hdu 2242 考研路茫茫――空调教室(Tarjan+树型DP)

题意:给你N个点,M条无向边,并且每个点有一个权值,问把哪条边去掉,能使图分成两个部分,并且这两个部分的权值差最小。 跑一次Tarjan转化成一棵树,然后跑一次树型DP(特别注意重边的处理)。 #include #include #include #include using na...

2012-10-24 20:50:32

阅读数:2657

评论数:0

POJ 3162 Walking Race(单调队列或线段树加树型DP)

题意:给你一棵有n个节点的树,树边为权值,要你求出树上每个点到其他点的距离中最大的那个值。对求出的从节点1到节点n最大值,找出最长的一段使得这一段中最大值减最小值的结点小于等于m。 对于第一个问题,有两种方法可以解决。第一种比较简单的方法是,每个点到其他点的距离中最大的那个值,一定是到树的直径的...

2012-10-24 01:13:52

阅读数:1998

评论数:0

POJ 1155 TELE(树型DP)

题意:有一个电视台广播节目,广播的网络用一棵树表示,节点1表示电台,叶子结点表示用户,用户愿意付一定的钱去收看这个节目,从非叶子结点到其他结点需要一定的费用(即从中继点到另一个中继点需要一些钱),问最后在不亏本的情况下,最多能使多少人收看到节目。 定义dp[i][j]表示在节点i为根节点的子树下...

2012-10-24 00:56:48

阅读数:1477

评论数:0

POJ 2486 Apple Tree(树型DP)

题意:给你一棵树,树上的每个节点都有权值,从一个节点到另一个节点需要的步数是1,问从节点1开始,给你步数为K,问能得到的最大权值是多少。 定义dp[i][j][0]表示从节点i出发能走j步最后不回到i点能得到的最大权值是多少。 定义dp[i][j][1]表示从节点i出发能走j步最后回到i点能得...

2012-10-24 00:51:41

阅读数:628

评论数:0

ZOJ 3613 Wormhole Transport(DP 斯坦纳树)

题意:有n个星球,其中有些星球上有多个工作,有些星球上有些资源(但是一个星球上的资源只能提供给一个工厂),知道在一些星球边建立边的代价,问使得得到资源的工厂的数目最多的多少,在些前提下代价最小是多少。 还是斯坦纳树,不懂看:http://endlesscount.blog.163.com/blo...

2012-10-21 22:19:09

阅读数:1623

评论数:0

HDU 4085 Peach Blossom Spring(DP,斯坦纳树)

题意:给你n,m,k ,分别表示有n个点,m条边,每条边有一个权值,表示修复这条边需要的代价,从前k个点中任取一个使其和后k个点中的某一个点,通过边连接,并且必须是一一对应,问最小的代价是多少。     同样是斯坦纳树,不过最后得到的答案可能是森林,所以最后要跑一个DP。如果不懂斯坦纳树,看:h...

2012-10-21 21:18:48

阅读数:2946

评论数:0

CF 108E Garden(DP,斯坦纳树)

题意:给你一个n*m的矩阵,和k个点,要求使这k个点相互连接,并且使连接的代价最小(每个矩阵上都有一个权值,如果权值为0表示k个点其中的一个,连接的代价等于将这些点连接起来的路径上的权值和。)    简单的斯坦纳树,只要要要多开一个数组记录路径。如果不懂斯坦纳树,看http://endlessc...

2012-10-21 21:15:33

阅读数:984

评论数:0

hdu 4293 Groups

题意:有 n 个人,可任意分成若干组,然后每个人各提供一个信息,表示他们组前面有多少个人,后面有多少个人。问最多有多少个信息是不冲突的。 可以用DP,也可以转化成求最长路。 DP,设这n个人的编号是从1到n,则每个的提供的信息可以转化成一段区间[a+1,n-b]。那么问题就可以转化成有最多有多...

2012-09-21 20:22:18

阅读数:772

评论数:0

hdu 4055 Number String

题意:由数字1到n组成的所有排列中,问满足题目所给的n-1个字符的排列有多少个,如果第i字符是‘I’表示排列中的第i-1个数是小于第i个数的。如果是‘D’,则反之。 定义dp[i][j]表示在这个排列中第i个数字以j结尾的,满足条件的子排列有多少个。 如果第i个字符是‘I’,那么明显可以得到d...

2012-09-15 22:45:12

阅读数:2068

评论数:2

hdu 4276 The Ghost Blows Light(树型DP)

题意:给你n个点,n-1条边构成树,每条边有边树,每个点有点权(表示走每条边的时间),问在时间T从点1走到点n,能够得到最多的点权有多少。 树型DP。先用spfa跑出从点1到点n的最短路。如果这最短的时间已经超过T,那么就是无法完成的。容易知道,最短路径上的边只会经过一次且必须经过一次,而其他边...

2012-09-11 21:39:13

阅读数:1688

评论数:0

ZOJ 3626 Treasure Hunt I(树型DP+01背包)

题意:给一棵有n个结点的树,每个点有点权表示在这个点上的价值,每条边有边权表示走这条路所需要的时候,给一个时间m,问在时间m从点k出发再回到点k所能得到的最大的价值和。 #include #include #include using namespace std; const int N=...

2012-08-06 11:47:37

阅读数:950

评论数:0

ZOJ 3632 Watermelon Full of Water(单点更新,区间查询)

题意:有n天,每天都可以买西瓜,每个西瓜的价格是ai,每个西瓜能吃bi天。问这n天每天都有西瓜吃的最小的代价是多少?如果你在第i天买了一个西瓜,那么之前买的西瓜就要全部扔掉,才能开始吃新的西瓜。 定义dp[i]为到i天为止,每天都有西瓜吃的最小代价,那么状态转移方程就是:dp[i]=min(dp...

2012-08-06 11:01:16

阅读数:1408

评论数:1

uva 10913 Walking on a Grid

题意:有一个大小有N(最多75)的方格,要你从(1,1)走到(n,n)。 有如下规则:你只有三个方向,左、右、下。不能走出方格。一个方格只能走一次。你要保证你的路径上的格子的和最大。你最多只能走k(最多为5)个负权值的格子,从起点到终点。 要注意,因为可以向右走,所以定义三维状态可能有问题,所...

2011-11-30 19:51:00

阅读数:1716

评论数:0

uva 10453 Make Palindrome

题意:给你n个串(长度最多为1000),问对于每个串插入最少多少m个字符能使它变成一个回文串。输出m,并把回文串输出. 看了解题报告。总结,还要随便用memset,否则会T。 #include #include #include using namespace std; const in...

2011-11-30 16:39:30

阅读数:1545

评论数:0

uva 10271 Chopsticks

题意:有t组测试数据,要你选出n+8对三元组(从m个数中)。要求这三个数x 设map[i][j]是从前j个数中选出i对三元组的最小的代价。 可以有如下的状态转移方程: map[i][j]=min(map[i][j-1],map[i-1][j-2]+bad[j]); 问题是z如何安排,当我们...

2011-11-30 11:16:32

阅读数:1865

评论数:0

uva 10617 Again Palindrome

题意:给你n个串(最长不超过60),问有多少种删去字符的方法使剩下的字符成为一个回文子串。 设map[x][y]为从x到y有多少个回文串。 当str[x]==str[y]的时候,我们要考虑x+1,y组成的回文串,x,y-1之间的回文串,但是两者都会计算x+1,y-1的回文串数,所以要减去,另外...

2011-11-29 22:38:54

阅读数:2058

评论数:0

uva 10404 Bachet's Game

题意:给你n个石头,有m种拿石头的方法,问是先手胜,还是后手胜。 用一个数组dp[i]表示当前的状态是必胜态还是必败态。设0表示必败,那么dp[0]=0,如果当前状态可能到达一个为0的状态,那么当前这个状态就是必胜态,因为为0的状态只可能是是全部为1的状态推来,即全部是必胜态推出。 #incl...

2011-11-29 21:30:14

阅读数:727

评论数:0

uva 10891 Game of Sum

题意:给你n(最多100)个数,有A,B两个人,两个人都可以从这些数的左右两个边界取数,A先取,如果两个都是按最优策略取,那么最后A的分数比B的多多少. 定义状态map[x][y][z]表示从x到y这段石子,z(0或1表示当前A取,或B取)能得到的最多的分数。 则状转移成,在x与y这个范围内的...

2011-11-29 18:07:34

阅读数:1272

评论数:0

uva 620 Cellular Structure

题意感觉有点奇怪,直接贴代码了。。 #include #include #include using namespace std; const int N=1000; char str[N]; int map[N][N]; bool vis[N][N]; int dp(int,int); ...

2011-11-29 15:30:34

阅读数:525

评论数:0

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