动态规划
Tongqi_Liu
喜欢看书,ACMed,攻城狮
展开
-
HDU 4756 Install Air Conditioning(MST + 树形DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4756题意:给n个点,现在要使这n个点连通,并且要求代价最小。现在有2个点之间不能直接连通(除了第一个点),求最小代价。思路:和HDU4126差不多,思路基本借鉴于http://blog.csdn.net/ophunter_lcm/article/details/12030593...原创 2014-09-25 23:30:13 · 826 阅读 · 0 评论 -
UVA11324 The Largest Clique (强联通 + DP)
题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=54643#problem/C题意:有一张有向图G 求一个节点数最大的节点集 其中任意2点 u和v 要么u 可以到v 要么v可以到u 要么相互可达思路:先用强联通缩点 每一个强连通分量都是可达的 求一条路径 路径上的每个点的权值即是该强连通分量的节点数 求权最大...原创 2014-10-25 16:47:03 · 643 阅读 · 0 评论 -
HDU 4455 Substrings (DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4455题意:给出长度为n个字符串,然后Q个询问,问长度为k的每个子串中不同的数字个数之和是多少思路:思路很难想,状态转移:dp[i]=dp[i-1]-A+B,其中A是最后一个长度为i-1的区间的不同数的个数,B是距离上一个与其相等的数为i的数的个数#include <...原创 2014-10-26 20:32:10 · 501 阅读 · 0 评论 -
ZOJ 3329 One Person Game(概率DP)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3329题意:有三个骰子,分别有k1,k2,k3个面,每次掷骰子,初始分数为0,如果三个面分别为a,b,c则分数置0,否则加上三个骰子的分数之和,当分数大于n时结束。求游戏的期望步数思路:期望一般逆推,概率一般正推,思路出自这里的题解,写得很好:h...原创 2014-11-06 22:24:51 · 482 阅读 · 0 评论 -
UVA 11324 The Largest Clique (强联通+DP)
题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=54643#problem/C题意:给一张有向图,求一个结点数最大的结点集,使得该集合任意两节点U和V满足:要么U能到V,要么V能到U,互相能达也行思路:同一个强联通分量里的点要么都选,要么都不选,故先缩点,那么每个SCC结点的权值等于它的结点数,题目便转化为求...原创 2014-11-06 22:42:55 · 561 阅读 · 0 评论 -
HDU 4003 (树形DP + 分组背包)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4003题意:求K个机器人从同一点出发,遍历所有点所需的最小花费思路:转自kuangbin大神博客:http://www.cnblogs.com/kuangbin/archive/2012/08/29/2661928.htmldp[i][j]表示对于以i结点为根结点的子...原创 2014-11-09 16:48:32 · 680 阅读 · 0 评论 -
HDU 1561 The more, The Better (树形DP + 01背包)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1561题意:ACboy很喜欢玩一种战略游戏,在一个地图上,有N座城堡,每座城堡都有一定的宝物,在每次游戏中ACboy允许攻克M个城堡并获得里面的宝物。但由于地理位置原因,有些城堡不能直接攻克,要攻克这些城堡必须先攻克其他某一个特定的城堡。你能帮ACboy算出要获得尽量多的宝物应该攻克哪M个城堡...原创 2014-11-09 22:23:17 · 516 阅读 · 0 评论 -
POJ 3140 Contestants Division(树形DP)
题目链接:http://poj.org/problem?id=3140题意:给你一棵树,每个点都有点权,求出去掉一条边后剩余两子树的最小权值之差思路:dp[u]代表以u点为根的子树的权值和,这样当去掉u和u的父节点间的那条边时,其权值差即为(总权值 - dp[u]) - dp[u]的绝对值,注意这题的数据范围需要用long long,而且ans初始值要给的足够大...原创 2015-01-25 12:02:23 · 688 阅读 · 0 评论 -
HDU 3586 Information Disturbing(树形DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3586题意:给定n个敌方据点,1为司令部,其他点各有一条边相连构成一棵树,每条边都有一个权值cost表示破坏这条边的费用,叶子节点为前线。现要切断前线和司令部的联系,每次切断边的费用不能超过上限limit,问切断所有前线与司令部联系所花费的总费用少于m时的最小limit思路:二分这个...原创 2014-11-14 17:19:50 · 424 阅读 · 0 评论 -
URAL 1057 Amount of Degrees(数位DP)
题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=68197#problem/C题意:统计一个区间内能转化为B进制的数后,1的个数恰好为K的个数思路:论文上的数位DP,高度为K的完全二叉树即可表示K位二进制数,f[i][j]表示计一棵高度为 i 的完全二叉树内二进制表示中恰好含有 j 个 1 的数的个数,这样即...原创 2015-01-25 22:24:58 · 443 阅读 · 0 评论 -
codeforces 219D Choosing Capital for Treeland(树形DP)
题目链接:http://codeforces.com/problemset/problem/219/D题意:给定一个树形图,现在选择其中一个节点,为了从此节点到达所有的其他节点需要改变一些边的方向,求出最小需要修改的边数以及满足最优解的节点思路:建双向边,边权为1就代表这条边是自己虚构出的,先对某一节点预处理出它所要修改的边数,再根据这次dp出的结果,从父节点更新到子节点,倘若...原创 2015-01-28 19:50:51 · 953 阅读 · 0 评论 -
SGU 390 Tickets(数位DP)
题目链接:http://acm.sgu.ru/problem.php?contest=0&problem=390题意:有一位售票员给乘客售票。对于每位乘客,他会卖出多张连续的票,直到已卖出的票的 编号的数位之和不小于给定的正数 k。然后他会按照相同的规则给下一位乘客售票。初始时, 售票员持有的票的编号是从 L 到 R 的连续整数。请你求出,售票员可以售票给多少位乘客。思...原创 2015-01-28 20:50:24 · 939 阅读 · 0 评论 -
HDU 4681 String(枚举 + LCS)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4681题意:给你字符串A,B,C,让你找一个字符串D,使得D串是A,B的子序列,而C串是D的子串思路:先预处理正,逆向的最长公共子序列及C在A,B中的位置,然后对于每一个位置对,即可知D的长度为前一半的LCS + C长度 +后一半的LCS#include <...原创 2015-01-28 21:09:43 · 413 阅读 · 0 评论 -
POJ 3260 The Fewest Coins(多重背包+完全背包)
题目链接:http://poj.org/problem?id=3260题意:有一个人去买m元的东西,有n种钱币,没种钱币的面额是v[i],个数是c[i],售货员每种钱币有无数多个。现在这个人想让交易的钱个数最少,即找回的和付出钱的张数最少思路:可以给出证明,背包容量的上界是maxv * maxv + m,因为当买家付款超过这个值时,那么对方找回的钱必然不小于maxv * max...原创 2015-03-30 15:36:37 · 519 阅读 · 0 评论 -
HDU 4734 F(x) (数位DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4734题意:给你两个数 a、b,F(x) = An* 2n-1+An-1* 2n-2+ ... + A2*2 + A1* 1,A是X十进制各个数位上的数字,让你求出 0 ~ b 中f(x) 比f(a)小的数字个数。思路:数位DP,dp[len][num]代表长度为len...原创 2014-12-22 21:13:06 · 420 阅读 · 0 评论 -
HDU 3001 Travelling(状压DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3001题意:和旅行商类似,就是起点不固定,而且每个城市最多走两次,求能经过每个城市最小权值和思路:类似TSP的状压方法,改用三进制进行DP,每一位代表经过该点的次数#include <cstdio>#include <cstring>#i...原创 2014-12-22 19:48:53 · 627 阅读 · 0 评论 -
HDU 4126 Genghis Khan the Conqueror (树形DP + MST)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4126题意:给n个点,m条边,每条边权值c,现在要使这n个点连通。现在已知某条边要发生突变,再给q个三元组,每个三元组(a,b,c),(a,b)表示图中可能发生突变的边,该边一定是图中的边。c表示该边新的权值,c只可能比原来的权值大。给的q条边发生突变的概率是一样的。求突变后连通n个点最小代价...原创 2014-11-18 21:51:55 · 611 阅读 · 0 评论 -
POJ 2378 Tree Cutting(树形DP)
题目链接:http://poj.org/problem?id=2378题意:给一棵n个节点的无根树,问去掉那一点可以使各连通分支中的节点数均<=n/2思路:在dfs过程中记录下正在访问的u结点的子树结点总数,然后进行判断即可#include <cstdio>#include <cstring>#include <cstd...原创 2014-11-14 15:57:00 · 450 阅读 · 0 评论 -
HDU 4960 Another OCD Patient (记忆化搜索)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4960题意:给定一个长度为n的序列,然后再给出n个数ai,表示合成i个数的代价。每次可以将连续的子序列和成一个数,即为序列中各个项的和。要求将给定长度n的序列变成一个回文串,一个数字只能被合成一次。思路:参照官方题解:#include <cstdio>...原创 2014-11-13 21:05:52 · 520 阅读 · 0 评论 -
HDU 3709 Balanced Number (数位DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3709题意:给你一个区间[l, r],问有多少平衡数,平衡数是指像4139这样,以3(某点)为支点,左边 = 4 * (4 - 2) + 1 * (3 - 2) = 9,右边 = 9 * (1 - 2) = -9,左边加右边为0的数思路:数位DP,思路来自:http://blog....原创 2014-11-12 22:45:56 · 490 阅读 · 0 评论 -
HDU 4118 Holiday's Accommodation(树形DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4118题意:一棵树上每个结点住着一个人,让所有的人交换结点,求最终这些人所走过的边的权值之和思路:对于每一条边,我们都需要使它尽可能多的被走过,那么最好的走过这条边的策略就是这边的权值乘上以该边为分界的两子树中较少的点数再×2,注意long long和递归爆栈#...原创 2014-11-12 19:56:17 · 734 阅读 · 0 评论 -
POJ 3162 Walking Race(树形DP + 单调队列)
题目链接:http://poj.org/problem?id=3162题意:对一棵树,求出从每个结点出发能到走的最长距离(每个结点最多只能走一次),将这些距离按排成一个数组得到d[1],d[2],d[3]……d[n] ,在数列的d中求一个最长的区间,使得区间中的最大值与最小值的差不超过m。思路:先求出树的直径,对于树中任意结点i,到树的直径的2个端点的距离的较大者即为最长距离d[i]...原创 2014-11-10 21:55:54 · 571 阅读 · 0 评论 -
HDU 4123 Bob’s Race(树形DP + 单调队列)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4123题意:给一颗N个点的树,对于每个点i先要找出离它最远的点的距离,设该距离为dis[i],再给M个询问,寻找dis数组中最大值与最小值之差不超过Q的最长连续区间的长度思路:先找出树的直径的两端点,树上任意点一定是到这两端点中的某一点的距离最远,这样就能处理出dis数组,然后再用两...原创 2015-08-08 16:43:29 · 899 阅读 · 0 评论 -
HDU 4705 Y (树形DP + 计数)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4705题意:在一棵树上找三个点,使得没有一条简单路径包含这三个点思路:先dfs预处理出每个结点的所有子树上的结点个数,然后再利用前,后缀和计数求解#include <cstdio>#include <cstring>#include &l...原创 2015-03-30 23:27:03 · 556 阅读 · 0 评论 -
HDU 4632 Palindrome subsequence (区间DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4632题意:求一段字符串的回文子序列思路:dp[j][i]表示这个区间内的回文子序列个数,然后再向两端扩展#include <cstdio>#include <cstring>#include <iostream>#incl...原创 2015-04-01 19:57:34 · 536 阅读 · 0 评论 -
HDU 4405 Aeroplane chess (概率DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4405题意:可以掷骰子跳步,做0跳到n点,有些点可以直接过渡到其他点,问要到达n点,掷骰子次数的期望值思路:概率DP,对于某个点,分能否过渡到其他点这两种情况,逆着推回dp[0]即可#include <cstdio>#include <cmath...原创 2015-04-04 14:44:18 · 379 阅读 · 0 评论 -
HDU 5045 Contest(状压DP或费用流)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5045题意:N个人去做M道题,给出这N个人解这M道题的概率,且任意两人做题数不能相差1,问做出所有题的最大期望思路:因为做题数不超过1的限制,这相当于是以N个人为一轮做N道题,做完M道为止,故而可以用dp[i][j]代表解决前i道题时状态为j,当j == (1 << n)...原创 2015-07-31 22:43:16 · 456 阅读 · 0 评论 -
UVALive 6042 Bee Tower(DP)
题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4053题意:一个蜜蜂要从地面跳上最高塔,每次跳的高度不能超过H,而且只能跳到相邻的塔上,它每次最多可以将某个塔移动W个距离,花费为高度差 *移动距...原创 2015-08-01 23:03:54 · 721 阅读 · 0 评论 -
HDU 4281 Judges' response(状压DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4281题意:一场比赛要有若干个裁判去回答N个问题,第i个问题在(xi, yi)处,裁判解答该问题需要ci分钟,每个裁判最多能解答M分钟的问题,每个点只能被一个裁判访问,从一点走到另一点的时间为其欧几里得距离值,问:1.最少需要多少裁判才能回答完所有问题2.假设有无数个裁判,求回答完所有...原创 2015-08-07 21:43:40 · 476 阅读 · 0 评论 -
HDU 4745 Two Rabbits(区间DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4745题意:给出一个长度为N的环形序列,有两只兔子各选一点出发,一个顺时针跳,一个逆时针跳,要求每次跳后兔子所在位置数字相同,问一圈内最多能跳几次思路:考虑每次跳的数值相同,方向相反,故就相当于组成了回文子序列,将环拆开来看,可以考虑中间点i将环分成[1, i]和[i + 1, N]...原创 2015-08-08 16:21:05 · 466 阅读 · 0 评论 -
HDU 3016 Man Down(线段树 + DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3016题意:一个人从高处往下垂直下落,每次可以从该木板的两端下落到最近的且包含该端点的木板上,一开始血量为100,跳到某个木板上可能回血或扣血,当血量 <= 0时该游戏结束,问跳到地面血量最多为多少思路:首先要考虑如何寻找下次能跳的最近的左右两木板这一问题,我们可以将木板升序排...原创 2015-08-09 22:53:59 · 478 阅读 · 0 评论 -
POJ 2750 Potted Flower(线段树 + DP)
题目链接:http://poj.org/problem?id=2750题意:给出N个数成环,再给M个操作,每次操作会改变某个数的数值,问每次更新完成后区间的最大和是多少,该区间不能是整个区间思路:将环从某点切开看成一段序列,对于一个区间而言,如过所选序列不包括断点,那么直接求区间最大连续和smax即可,如果包括断点,那么答案则为max(smax, sum - smin),sum...原创 2015-08-10 21:47:36 · 826 阅读 · 0 评论 -
HDU 4028 The time of a day(DP)
题目链接:acm.hdu.edu.cn/showproblem.php?pid=4028题意:题目转化后就是在1~N中任选数字组成LCM,问有多少种组法使得LCM >= M思路:考虑dp[i][j]为选至第i个数lcm为j的方案数,考虑lcm值很大会爆内存,但是可组成的lcm的个数不算特别多,故考虑用map进行映射,每个map保存lcm值和方案数两个值,根据lcm的值进行...原创 2015-09-04 22:20:49 · 467 阅读 · 0 评论 -
HDU 5115 Dire Wolf(区间DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5115题意:有N只狼要杀,每只狼有两个属性,一个是攻击值,一个是附加值,每杀一只狼,受到的伤害是该狼的攻击值 +邻近两只狼的附加值,求杀完所有狼所受的最小伤害思路:dp[l][r]表示杀完[l, r]内的狼所受的最小伤害故而有转移方程:dp[l, r] = min(dp[l, ...原创 2015-10-28 16:20:52 · 545 阅读 · 0 评论 -
CodeForces 589H Tourist Guide(树形DP)
题目链接:http://codeforces.com/problemset/problem/589/H题意:给出一张无向图,图上有些点是被标记的,现在要找出尽量多的路径满足:1.路径的起点和终点都是被标记过的点2.每个被标记的点最多只能作为某一路径的端点3.任意两条路径不能有公共边思路:考虑可以把环切开当成树来做,那么对于子树,如果该子树内有偶数个标记点,那么就可以...原创 2015-10-31 23:08:35 · 1014 阅读 · 3 评论 -
HDU 4433 locker(DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4433题意:给两个等长的字符串,每次最多可以旋转连续的三个数字,问最少需要多少次将S串转为T串思路:dp[i][j][k]可以表示i位匹配完成,第i +1位变作j,i + 2位变作k所需的最少步数,当i位匹配完成后,可以枚举出i + 1位能选转的次数,然后再去更新i + 2, i +...原创 2015-07-26 22:59:36 · 698 阅读 · 0 评论 -
HDU 5303 Delicious Apples(DP + 贪心)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5303题意:有一个长度为L的环,环上有N棵苹果树,有个每次能装K个苹果的篮子,装满后要回到搬到起点,问从起点出发,最少需要多少距离将所有苹果搬到起点思路:dp[0][i]代表顺时针出发摘掉i个苹果回到起点的最短距离,dp[1][i]相应表示逆时针从贪心角度考虑,我们每次肯定按照距...原创 2015-07-25 22:47:39 · 501 阅读 · 0 评论 -
HDU 3681 Prison Break(状压DP + 二分)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3681题意:给一张N * M的图,只能上下左右移动,每移动一格消耗一点能量,其中F是起点,D不能走,G点可以把能量加满,Y点必须经过,问最少需要多大的能量容量可以将Y点全部遍历思路:先将原图hash成易处理的图,再bfs预处理出每个F,G,Y到其他点的最短距离,然后二分答案进行状压D...原创 2015-07-24 20:52:15 · 581 阅读 · 0 评论 -
HDU 4336 Card Collector (概率DP 或 容斥原理)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4336题意:有N(1<=N<=20)张卡片,每包中含有这些卡片的概率为pi,每包至多一张卡片,也可能没有卡片, 求需要买多少包才能拿全N张卡片,求次数的期望。概率DP思路:可以状压枚举每个状态,然后状态间进行转移,注意对于发生状态转移的概率的理解:如果当前状态能够从...原创 2015-04-04 16:02:21 · 532 阅读 · 0 评论 -
HDU 4274 Spy's Work (树形DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4274题意:给一颗树,1是根节点,树上每个结点的权值是该节点子树的权值之和(必然不小于1),现在给出某些结点权值的推算关系,问这些关系是否矛盾思路:对于每个结点,我们可以在dfs时可以通过子树下限更新其权值下限,上限无法确定,然后再根据所给的信息判断是否矛盾#inc...原创 2015-04-13 17:41:17 · 381 阅读 · 0 评论