
ACM-DP
文章平均质量分 78
「已注销」
这个作者很懒,什么都没留下…
展开
-
Codeforces Round #175 DIV2 E Positions in Permutations
题目链接题意:对于某个排列p1,p2,...pn,位置i为good position当且仅当| pi - i | = 1,给你一个N,表示排列的元素个数,求满足恰好有K个good position的排列的个数,对结果Mod 1000000007。 思路:DP。首先很容易就可以想到如下的状态dp,用dp[i][j] 表示前i个位置中正好有j个位置是good position的种数。那么对于原创 2013-03-22 14:24:50 · 1177 阅读 · 2 评论 -
POJ_3017 Cut the Sequence 单调队列+dp+BST
http://poj.org/problem?id=3017题意:给你一串数字,要求将数字分成若干组, 每组中的数字的sum不能超过M,求所有分组中,每组的最大值的和的最小值。N思路:本题dp的思路是很容易就可以想到的,F( i ) 表示将1到i号元素分成若干组之后,每组的最大值的和的最小值,转移方程为:F( i ) = min{ F( K ) + max{ K+1 , i原创 2012-05-15 20:50:02 · 817 阅读 · 0 评论 -
HDU_3732 Ahui Writes Word 背包
http://acm.hdu.edu.cn/showproblem.php?pid=3732题意:给你N个单词,每个单词有一个value 和一个complexity,现在要求你在给定的C复杂度内求出最大的value和。N思路:看到这题第一反应应该就是背包,但是仔细一看就可以发现没有那么容易,直接背包的复杂度有O( NC ),直接背包肯定会超时。但是题目中有一个条件是很显眼的原创 2012-05-31 22:28:15 · 486 阅读 · 0 评论 -
HDU_3401 Trade 单调dp
http://acm.hdu.edu.cn/showproblem.php?pid=3401做了一天的一道题目,一开始想复杂了,或者本来就没有搞清楚 。。。题意:给你T天股票的信息,每天的信息分别可以表示为:APi , BPi , ASi , BSi,分别表示第i天时股票的买入单价、卖出单价、第i天最多可以买入的股票数、最多可以卖出的股票数,并且还有一个约束条件,那就是两个交易原创 2012-05-12 12:08:08 · 838 阅读 · 0 评论 -
USACO 3.4 A Game
http://ace.delos.com/usacoprob2?a=5yeP9Cco705&S=game1题意:有一个两个人的游戏,游戏的规则是这样的:给你一个有N个数的数列,每次有一个选择这样数列的一端将该数删除,所得的分数就是该是的值,游戏从P1开始,问假设两个人都采用最优策略,最后两个人的得分是多少。思路:博弈问题,可以用动态规划解决。状态为:dp[i][j][0] : 表示将[ i原创 2012-04-24 15:28:27 · 415 阅读 · 0 评论 -
hdu 2167 Pebbles 状态dp
http://acm.hdu.edu.cn/showproblem.php?pid=2167和POJ 1185炮兵阵地类似, 做法也类似,这里不再详细叙述。有一点需要注意就是要注意输入的格式,很蛋疼。。代码:#include#include#define MAX(a,b) (a) > (b) ? (a) : (b) int N ;int num[16][16] ;char c原创 2012-04-04 21:59:09 · 677 阅读 · 0 评论 -
POJ 炮兵阵地 1185 状态压缩dp
http://poj.org/problem?id=1185题意:给定一个N*M 的矩形,其中包括了山地(“H”)和平原(“P”),现在要求在平原上布置一些炮兵据点,每个平原上最多可以布置1个炮兵据点,而且每个炮兵据点可以攻击其周围上下左右2个范围内的据点,为了不让炮兵据点相互攻击,求最多能布置多少个炮兵据点。N思路:经典状态压缩dp。观察题目之后发现,题目给定的N和M的范围相差较大,并且原创 2012-04-04 20:21:16 · 517 阅读 · 0 评论 -
POJ 2411 Mondriaan's Dream 状态压缩dp
http://poj.org/problem?id=2411题意:给定一个N*M的矩形区域,用1*2的小矩形将其填满,问一共有多少种填法。1思路:状态压缩dp 。用dp[i][j]表示将前i-1行正好完全填满,i行状态为j时的种数,状态转移方程为:dp[i][j] = sum{dp[i-1][pre]},其中pre状态可以转化为j状态。在已知pre求j就的时候,我们可以用一次dfs来搜索出原创 2012-04-04 12:29:11 · 469 阅读 · 0 评论 -
POJ 2486 Apple Tree 树形dp
http://poj.org/problem?id=2486题意:一个叫Wshxzt的可爱的女孩子被HX大叔带到了一棵苹果树边。众所周知,苹果树是一个树形的结构,在节点处长有苹果(这明显不符合实际情况……)。现在我们知道Wshxzt是个苹果控,她只要访问到一个节点,就一定会吃光这个节点所有的苹果。HX大叔为了防止Wshzxt长胖,限制她只能走K(1 ≤ K ≤ 200)步,从一个节点走到另一个原创 2012-04-03 23:54:24 · 1005 阅读 · 0 评论 -
Vijos P_1002 过河 状态优化dp
http://www.vijos.org/Problem_Show.asp?id=1002题意:有一座独木桥,桥的长度是L,现在有一只青蛙,想从桥的一边跳到桥的另外一边去,但是现在桥上有一些讨厌的石头, 青蛙很不希望踩在这样的石头上,因此它想尽可能地避开这些石头不踩而达到河的对岸。现在已知青蛙从0点开始跳,桥的结束左边是L,如果青蛙跳到了L之后或者L点就表示它已经过河了,问最少需要经过几次原创 2012-07-15 14:29:17 · 1184 阅读 · 0 评论 -
POJ_3071 Football 概率dp
http://poj.org/problem?id=3071题意:有(1思路:概率dp,我们用dp[i][j]表示经过i场比赛之后,第j个人还没被淘汰的概率,那么状态转移方程就变成了:dp[i][j] = sum{ dp[i-1][j] * dp[i-1][k] * P[j][k] } ,其中的k表示在第i轮有机会和i比赛的人的编号,P[j][k]表示jbeatsk的概率,最后原创 2012-08-02 14:24:55 · 512 阅读 · 0 评论 -
HDU_4332 Constructing Chimney
http://acm.hdu.edu.cn/showproblem.php?pid=4332题意:有一块3*3的空地,要求在上面建一个建筑物,但是要求中间的那块必须空着,现在只有1*1*2的砖,问你要建成高度为N的建筑物共有多少种不同的方法。N思路:看到这么大的N就应该想到用矩阵二分幂来求,那么很显然就是dp了,因为砖只有1*1*2的一种,在对一层进行排放的时候我们只需关心它的上一原创 2012-08-28 14:03:10 · 756 阅读 · 0 评论 -
HDU_4317 Unfair Nim 状态压缩dp
http://acm.hdu.edu.cn/showproblem.php?pid=4317题意:有N堆石子,每堆石子都有一定数目的石子,现在你可以往石堆中加任意多的石子,使得先手必败。思路:首先我们可以可以发现的一点就是,根据Nim博弈的知识,我们知道N堆石子先手必败的条件是N堆石子的石子数异或值为0,那么问题就转变成了在N堆石子中加一定数量的石子,使得最后异或值变成0。因为异或原创 2012-07-31 19:58:23 · 661 阅读 · 0 评论 -
HDU_3828 A + B problem 状态dp
http://acm.hdu.edu.cn/showproblem.php?pid=3828题意:给你N个数,求N个数在满足下面3个条件的情况下相加的最小和。条件一: 相加的两个数是二进制相加;条件二:相加的两个数A,B , A的后缀可以和B的前缀合并成一个条件三:相加的两个数A,B,如果A是B的子串,则A可以不算。思路:很好的一道状态压缩dp。对于两个数,我们可以发现原创 2012-07-26 15:14:47 · 1466 阅读 · 0 评论 -
ZOJ_3620 Escape Time II
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3620题意:有N个房间,每个房间都有一定的珠宝量,给你T秒钟,从起点s出发,问如果要求在t之前要达到终点e你最多能拿多少珠宝。思路:本题的N#include#include#include#includeconst int inf = 0x3f原创 2012-07-23 21:38:39 · 482 阅读 · 0 评论 -
HDU_3872 Dragon Ball dp
http://acm.hdu.edu.cn/showproblem.php?pid=3872题意:有N个球,每个球都有一个type和energy,现在要求将N个球分成若干组,每个组的中要求没有和最右边的球一样type的球,每个组的得分是该组中所有球的最大值, 求所有组的最小得分。思路:这个题目dp的状态很好表示,用Fi表示前i个球分成若干组之后的最小得分,状态转移方程就是:Fi =原创 2012-08-07 19:12:29 · 676 阅读 · 0 评论 -
Codeforces 55D Beautiful numbers 数位dp
http://codeforces.com/problemset/problem/55/D题意:要你求在A到B区间内的所有beautiful数,beautifil数的定义是这个数能被它自身数位上的所有数整除。思路:很好的一道数位dp的题目,大致的想法是这样的:首先我们可以知道一个数要能被它的所有数位上的非零数整除,那么这个数就必须要能被这个数中出现过的所有数字的最小公倍数整除,这样原创 2012-08-05 19:52:14 · 1257 阅读 · 0 评论 -
HDU_3709 Balanced Number 数位dp
http://acm.hdu.edu.cn/showproblem.php?pid=3709题意:求[x , y]内的平衡数的个数。 0思路:数位dp。先枚举pivot点,然后逐位进行确定,为了便于处理,dp的时候我们将左右力矩合在一起考虑,即左边的力矩是正的,右边的力矩用负的表示。状态为:dp[pos][ pivot ][ sum ]表示后面pos位在不受大小限制的情况下,且支点原创 2012-08-05 21:32:41 · 1133 阅读 · 1 评论 -
HDU_3652 B-number 数位dp
http://acm.hdu.edu.cn/showproblem.php?pid=3652题意:给你一个数N,求1-N中有多少个数满足数位中有13这个substring 和 能被13整除这两个条件的数的个数。思路:数位dp。这题是要求我们求满足有13子串的数的个数,那么在某一位添加什么数字的时候就会受到前面有没有13出现的影响,我们用dp[i][0] , dp[i][1] , d原创 2012-08-03 15:42:20 · 1590 阅读 · 2 评论 -
POJ 3150 Cellular Automaton 矩阵dp
http://poj.org/problem?id=3150思路:利用矩阵A,B具有A[i][j]=A[i-1][j-1],B[i][j]=B[i-1][j-1](i-1我们可以得出矩阵C=A*B也具有这个性质C[i][j]=sum(A[i][t]*B[t][j])=sum(A[i-1][t-1],B[t-1][j-1])=sum(A[i-1][t],B[t][j-1])=C[i-1]原创 2012-04-03 21:16:30 · 548 阅读 · 0 评论 -
POJ 1179 Polygon dp
http://poj.org/problem?id=1179题意:给定一个环, 求在其中断开一条边之后,最终所能得到的分数最高的所有方法。思路:枚举+dp。给定的N的范围为1-50。因为给定的是一个环,我们只要段开其中的任意一条边,环就变成了一条线,这样我们只要枚举断开的那条边,然后求出给定的线的最高得分就可以解决该问题,在求有N个点的线的最高得分的时候,我们可以用dp[i][j]表示将i原创 2012-04-03 11:26:52 · 802 阅读 · 0 评论 -
POJ 1390 Blocks dp
http://poj.org/problem?id=1390题意:有一种消方块的游戏,连续且颜色相同的一段称为一段,消掉该段方块所得的分数为该段方块长度的平方,不同的消方块的次序会使得最后的总得分不相同,求一中得分最高的消法。思路:很经典的一道dp题,出自LRJ黑书123页。首先我们想到的是用dp[i][j] 来表示消掉C[i] .. C[j]总共j-i+1段方块的最优解(最大得分),考虑原创 2012-04-02 22:56:56 · 972 阅读 · 0 评论 -
ZOJ_Tug of War DP
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1880题意:给定n个数,要求分成两组,每组的个数最多相差1,求两组数的和相差最小的情况。算法: 经典DP。分析:用dp[i][j] 表示i个人的原创 2011-10-09 17:13:50 · 497 阅读 · 0 评论 -
ZOJ_Crossed Matchings DP
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1425DP,定义dp[i][j]为第一行中的前i个数和第二行中的前j个数,最多能构成多少对相交线段。因为题意中规定,任意一段合法的线段a有且只有一段线段原创 2011-10-01 13:04:08 · 442 阅读 · 0 评论 -
ZOJ_Magazine Delivery DP
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1428题意:用三辆车给n个地方送杂志,初始时三辆车都在位置1处,且位置1处能提供足够的杂志,没辆车能携带的杂志数是无限制的,杂志必须按照原创 2011-10-01 14:43:52 · 636 阅读 · 0 评论 -
ZOJ_Painting A Board 状态DP
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1424题意:给一面墙刷漆,要求刷下当前墙的时候,在其上面的墙必须都要已经刷完了。 求刷子换颜色的最少次数。算法:状态DP。状态转移方程:dp[i原创 2011-10-01 12:04:18 · 383 阅读 · 0 评论 -
ZOJ_Multiplication Puzzle DP
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1602 题意:给定n个整数,除了两个边界(一头一尾)之外,将其他的n-2个数删除,每次删除一个数之后,将该数与其左边的、右边的数相乘的积作为原创 2011-10-02 21:56:40 · 456 阅读 · 0 评论 -
ZOJ_Wooden Sticks
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1025题意:给定一些stick,有一定长度和重量,现在 需要用最少的分组,实现任意一组中stick的长度和重量都不降 。算法: DP+最长下降子序列原创 2011-09-30 00:49:03 · 575 阅读 · 0 评论 -
ZOJ_1903 Monkey and Banana
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1093题目大意:给定一些block,每个block都有一定的尺寸,x,y,z,每种block都有无数个,求用这些block能搭成的最大高度,要求在上面的原创 2011-09-29 23:43:08 · 544 阅读 · 0 评论 -
FZ_2011 Carcassonne 状态DP
http://acm.hdu.edu.cn/showproblem.php?pid=4064题意:给定n*m给方块四边形,四边形的每边都有一种颜色,可以为R、F、C中的一种,在只可以旋转单个方块的前提下,问总共有多少种旋转方法,可以使最终的结果变成每两个共享一条边的四边形颜色原创 2011-10-10 16:44:18 · 425 阅读 · 0 评论 -
01-K Code ZOJ
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2745终于AC了,纠结了一天的一道题。。。。题意: 给一个长度为N的string , 需要往里面填充一些0、1,约束条件就是N的任意一个substring的中0的个数和1的个数之差不能超过K。算法: DP分析: 一开始没有看到substring 。 以为就是要原创 2011-10-20 22:50:00 · 1070 阅读 · 0 评论 -
POJ FOUR QUARTERS
http://poj.org/problem?id=1217题意:两个人在玩抛硬币的游戏,没回合抛两次,两次的结果不同,双方得到的分也是不同的,要求输出前20轮中,没回合A胜,B胜或是平局的概率。算法:概率DP分析:用dp[i][j][k] 来表示第i轮,A得的总分数为j,B得的分数是k的概率 ,用向后递推的思想就可以求解本题了。 代码:/*POJ 1217 FOUR原创 2011-11-01 19:36:13 · 680 阅读 · 0 评论 -
POJ 1947 Rebuilding Roads 树形dp
http://poj.org/problem?id=1947题意:给你一棵有N个结点的树, 要求从树中剪掉一些边, 使得最后得到的子树恰好有P个结点。思路:树形dp。用dp[i][j] 表示在以i为根的子树中保留下j个结点最少需要剪掉的边数。这样在求i结点的不同j值时,就是对其孩子的一次背包。dp[i][j] = MIN(dp[i][j] , dp[son[i]][k]+dp[i][j-k原创 2012-04-04 11:16:55 · 541 阅读 · 0 评论 -
POJ 1241 Knockout Tournament 树形dp
http://poj.org/problem?id=1241题意:有2^n运动员,两两分别进行一场比赛,胜的人可以继续比赛, 这样就可以形成一颗完全二叉树,求树中任意给定的一个结点的最好名次和最差名次。思路: 树形dp ,一道比较经典的树形dp的题目,对于一个给定的结点,我们可以分别求出该结点的最好名次和最差名次。用low[i]和 high[i]分别表示i号结点的最差名次和最好名次,求最好原创 2012-04-03 23:15:41 · 1026 阅读 · 0 评论 -
hdu 1011 Starship Troopers 树形dp
http://acm.hdu.edu.cn/showproblem.php?pid=1011题意很纠结。。 第一遍看了题目之后以为是从根走到叶子结点不分叉,一交WA 。 再看题目,发现只是说同一个结点不能经过两次,但是可以“兵分几路”的思想去达到最大值。然后就是想到了对每个根结点u ,进行一次背包,但是这里还有一个地方需要注意,就是:如果要获得子结点的Brain 就必须要首先获得父节点的Bra原创 2012-04-01 09:34:15 · 518 阅读 · 0 评论 -
ZOJ 3502 Contest 状态压缩dp
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4345思路: 状态dp ,用dp[j]表示达到状态j时的最大期望,转移方程为: dp[j] = dp[jj] + pp ,pp为第i题答对的概率(也即是第i题答对的期望)。代码:#include #include #include using namespace原创 2012-04-01 22:33:24 · 487 阅读 · 0 评论 -
POJ 3345 Bribing FIPA 树形dp
http://poj.org/problem?id=3345题意 :给定N个国家,相互之间可能存在附属关系,现在想要贿赂m个国家,已知,贿赂一个国家,那么如果该国家拥有附属国,那么他的所有附属国都可以算作已经贿赂。思路:树形dp。dp[u][j]:表示在以u为根的子树中选出j个国家的最小花费。这里在求以u为根的子树中选出j个国家的花费的时候还是用dfs 的方法,先求出孩子结点的值,然后从叶原创 2012-04-01 13:57:59 · 548 阅读 · 0 评论 -
POJ 1655 Balancing Act 树形dp
http://poj.org/problem?id=1655题意:一颗有N个结点的树, 每个结点的平衡度定义为:从树中去掉该结点之后形成的森林中结点最多的树的结点数 ,求平衡度最小的结点。如果有两个结点的平衡度相同,则输出编号较小的那个。思路: 树形dp。 确定树的一个根结点,对于某个结点,首先用dp[i]表示以该结点为根节点的子树中结点的个数,在该结点的所有孩子的子树中的结点的个数由叶-原创 2012-03-27 21:38:12 · 512 阅读 · 0 评论 -
Ural 1018 Binary Apple Tree 树形dp
http://acm.timus.ru/problem.aspx?space=1&num=1018题意:有一棵苹果树,苹果树的是一棵二叉树,共N个节点,树节点编号为1~N,编号为1的节点为树根,边可理解为树的分枝,每个分支都长着若干个苹果,现在要要求减去若干个分支,保留M个分支,要求这M个分支的苹果数量最多。思路: 树形dp。 状态转移方程为:dp[root][d] :表示以root为子树原创 2012-03-27 17:10:17 · 648 阅读 · 0 评论 -
POJ 1155 TELE 树形dp
http://poj.org/problem?id=1155题意:某电台要广播一场比赛,该电台网络是由N个网点组成的一棵树,其中M个点为客户端,其余点为转发站。客户端i愿支付的钱为pay[i],每一条边需要的花费固定,问电台在保证不亏损的情况下,最多能使多少个客户端接收到信息?广播台所在的节点编号为1。思路:树形dp。 用dp[root][d] 表示以root为根的子树中,保留d个用户的最原创 2012-03-27 20:40:56 · 644 阅读 · 0 评论