动态规划
文章平均质量分 75
Xcockroach
这个作者很懒,什么都没留下…
展开
-
HDU 4028--The time of a day
来源:http://acm.hdu.edu.cn/showproblem.php?pid=4028题意:给你1到n个数,求其组合中的最小公倍数大于m的组合数。#include #include #include #include #include #include #include #include #include #include #include #includ原创 2012-09-03 14:34:41 · 410 阅读 · 0 评论 -
POJ 1170--Shopping Offers(状压+背包)
来源:http://poj.org/problem?id=1170题意:给定一个订单的n种商品,每种商品都有一个价格、数量,在给定m种组合,这些组合会得到便宜的价钱。问怎么分配使总价值最小。分析:先将每种物品用一个六进制表示,一个物品为1,第2个为6...,这样总状态为num1*1+num2*6+...然后对n+m种物品进行一个完全背包。#include #include #i原创 2012-09-19 11:00:15 · 782 阅读 · 0 评论 -
CF 173D-- Palindromes
来源:http://codeforces.com/problemset/problem/137/D题意:给你一个字符串,求最多分成k个回文所添加的最少字母数。#include #include #include #include #include #include #include #define INF 100000000using namespa原创 2012-09-18 10:34:41 · 359 阅读 · 0 评论 -
HDU 4293--Groups
来源:http://acm.hdu.edu.cn/showproblem.php?pid=4293题意:有n个人,可任意分成若干组,然后每个人个各提供一个信息,表示他们组前面有多少人,后面有多少人。问最多有多少个信息是不冲突的。分析:给n个人编号1到n,一个组报出前后有多少人时可以算出这组的人的区间,这样就可以把本题转化成给定一些带权值的区间,求不相交区间的最大权值。这样就可以先按区间排个原创 2012-09-18 10:25:34 · 664 阅读 · 0 评论 -
HDU 2196--Computer(树形dp)
来源:http://acm.hdu.edu.cn/showproblem.php?pid=2196题意:给一棵树,每条树边都有权值,问从每个顶点出发,经过的路径权值之和最大为多少?每条树边都只能走一次,n 分析:第一次DFS求出所有节点在他的子树范围内到叶子节点距离的最大值和第二大的值,第二次DFS更新从父节点过来的情况就可以了。因为如果只存最大值的话,判断一个点的从父节点过来的最大值,那原创 2012-09-15 00:40:31 · 378 阅读 · 0 评论 -
POJ 1155--TELE(树dp+背包)
来源:http://poj.org/problem?id=1155题意:一棵树,1为根结点表示电视台,有m个叶子节点表示客户,有n-m-1个中间节点表示中转站,每条树边有权值。现在要在电视台播放一场比赛,每个客户愿意花费cost[i]的钱观看,而从电视台到每个客户也都有个费用,并且经过一条边只会产生一个费用。问电视台不亏损的情况最多有几个客户可以看到比赛?分析:解法为树形DP+背包,dp[原创 2012-09-15 01:11:00 · 445 阅读 · 0 评论 -
HDU 4284--Travel(状压dp+TSP)
来源:http://acm.hdu.edu.cn/showproblem.php?pid=4284题意:给出一些城市,从1出发,旅游一圈回到1,由于花费可能不够,所以选择一些城市打工,打工之前需要花费d买一个证,工资为c。选中的城市必须去工作一次,而且只能工作一次,问能不能完成旅行。分析:先用floyd处理下,然后就是红果果的TSP了。#include#include#incl原创 2012-09-13 17:24:00 · 471 阅读 · 0 评论 -
HDU 4003--Find Metal Mineral(树形dp)
来源:http://acm.hdu.edu.cn/showproblem.php?pid=4003题意:给定k个机器人去遍历n个节点的树,求最小花费分析:dp[root][j]表示以root为根时,用j个机器人走完所花费的最小价值。状态转移方程:当j==0时,dp[i][0]=dp[son][0]+2*w son是i的所有子节点,w是i到son的花费;当j!=0时,dp[i][原创 2012-09-14 08:41:27 · 398 阅读 · 0 评论 -
HDU 3001--Travelling(状态压缩+tsp)
来源:http://acm.hdu.edu.cn/showproblem.php?pid=3001题意:n个点,m个边,求遍历所有边的最短路径,并且每点最多访问两次。分析:很经典的TSP问题,但是题目又有改变,每个旅游地可以走两遍,故进行扩展2状态的状态压缩DP伸展为3状态的状态压缩问题。0表示没去过此点,1 表示去过一次,2表示去过两次,状态转移方程基本和以前一样dp[i][j]=min原创 2012-09-13 21:04:41 · 564 阅读 · 0 评论 -
ZOJ 4257--Most Powerful(状压dp)
来源:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4257题意:不超过10种气体,两两之间相互碰撞可以产生一定的能量,如a碰b,那么b气体就消失,自身不能碰自身,问最后所能得到的最大能量。分析:用10位的二进制中的0、1表示气体是否存在,dp[i]表示i状态时的最大能量。#include#include#原创 2012-09-13 10:27:55 · 797 阅读 · 0 评论 -
POJ 3311--Hie with the Pie(状压dp+TSP)
来源:http://poj.org/problem?id=3311题意:一个送外卖的,从0出发,送到n各地方,再回到0,计算其花费的最小时间.分析:这道题是旅行商基础题,用到floyd算法计算每个节点之间的最短距离,然后进行dp。其中dp[i][j]表示到达i状态时终点是j时走的最短的路径。#include#include#include#include#include原创 2012-09-13 09:37:16 · 416 阅读 · 0 评论 -
HDU 4026--Unlock the Cell Phone(状态压缩)
来源:http://acm.hdu.edu.cn/showproblem.php?pid=4026题意:输入n,m表示图案为n*m的规模(n,m分析:状态压缩dp,dp[i][k],表示以结点i为最后一个连接点路径状态为k时的图像个数。转移式为dp[i][k] = dp[1][k ^ (1 #include #include #include #include #inc原创 2012-09-03 16:53:55 · 376 阅读 · 0 评论 -
HDU 4123--Bob’s Race(树形dp)
来源:题意:n个点的树,每个点有个人,每个人会跑到离自己最远的点上。给你m个查询,对每个查询q,找一段连续的人的编号,使其中的最大值和最小最的差不大于q。#include#include#include #include #include #include #include #include #include #include #include原创 2012-09-13 10:41:51 · 792 阅读 · 0 评论 -
HDU 4118--Holiday's Accommodation(树形dp)
来源:http://acm.hdu.edu.cn/showproblem.php?pid=4118题意:给n个点,每个点有一个人,有n-1条有权值的边,求所有人不在原来位置所移动的距离的和最大值。思路:对于每一个边,都可以把这个变量偷的点交换,这样这些点都要走这个边,就是这个边要走2*min(左端的点数,右端的点数)。但是会爆栈,可以人工开栈,也可用非递归的方法写dfs,同样可以过。#原创 2012-09-08 09:47:48 · 1586 阅读 · 0 评论 -
HDU 3652--B-number(数位dp)
来源:http://acm.hdu.edu.cn/showproblem.php?pid=3652题意:求1到n中有多少个数含有'13'串。分析:很明显的数位dp,网上现在都有现成的模板了。#include #include #include #include #include #include #include #include #include #include原创 2012-09-05 14:34:30 · 1060 阅读 · 0 评论 -
POJ 1185--炮兵阵地(状压dp)
来源:题意:给出一个n*m的矩阵,矩阵的每个方格标有P/H p表示可以安置大炮,H表示不能安置大炮,当大炮安置于(i,j)点时,其左右两个单位以及上下两个单位都在攻击范围,求在两支大炮不会相互攻击的前提下,最多能够安置大炮的数量。分析:当前行大炮的的安置要受其前两行的影响,所以状态转移方程有:dp[i][j][k] = max(dp[i][j][k],dp[i - 1][k][l]原创 2012-09-04 14:41:07 · 430 阅读 · 0 评论 -
POJ 2250--Compromise(LCS以及路径记录)
来源:http://poj.org/problem?id=2250题意:求最长公共子序列,并记录路径。#include#include#include#include#include#include#include#include#include#includeusing namespace std;string ans[1005];in原创 2012-09-03 19:06:28 · 477 阅读 · 0 评论