动态规划
文章平均质量分 78
Interstellar_
这个作者很懒,什么都没留下…
展开
-
HDU 3366 Passage (概率DP)
PassageTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 411 Accepted Submission(s): 192Problem DescriptionBill is a millionaire. B原创 2016-07-26 19:29:01 · 1780 阅读 · 0 评论 -
UVa 10118 Free Candies (记忆化搜索+状态压缩)
题目链接:https://cn.vjudge.net/problem/UVA-10118思路:设dp[pa][pb][pc][pd]四堆糖分别取到这四堆的第pa、pb、pc、pd颗时最多的pair数, 用一个二进制串记录篮中糖的状态(即哪些糖有那些没有)。状态转移一共四个,即分别从这四堆中拿出一颗糖放到篮子里,转移到放之后的状态。详见代码#include#include#inc原创 2017-02-01 21:23:00 · 399 阅读 · 0 评论 -
POJ 1155 TELE (树形背包)
题目链接:http://poj.org/problem?id=1155题目大意:给出一棵n个结点的树,每个叶子结点有一个权值,每条边也有一个权值。求一个叶子节点数最大的集合,使得该集合中所有点的权值和减去这些点到达根结点所经过的边(重复了只算一条)的权值之差为非负值。思路:另dp(i, j)表示从以i为根结点的子树中选j个叶子结点所剩金钱的最大值,则dp(u, j) = m原创 2017-03-31 08:21:32 · 368 阅读 · 0 评论 -
HDU 5550 Game Rooms (dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5550题目:一共n层楼,每层楼都要建一个娱乐室,共有两种(球馆、游泳馆)可以选择,且n层楼中至少有1个球馆和游泳馆。现每层楼有Ti个球类爱好者,Pi个游泳爱好者,他们都要去各自的娱乐室娱乐,求一个建造方案,使得他们走的总路程的最小。(假设A在3楼,要去游泳。若游泳馆在3楼,则A走的路程为0;若游泳馆原创 2017-04-06 11:44:25 · 505 阅读 · 0 评论 -
Codeforces 814C An impassioned circulation of affection (dp)
题目链接:http://codeforces.com/contest/814/problem/C大意:给一个长度为n的字符串,以及若干操作(m, c),每个操作表示可以将最多m个字母改成c,求每次操作后字符串中c的最大连续长度。思路:因为查询次数很多,若直接以O(nq)的复杂度来切入,时间复杂度过不去。仔细分析可以知道,对于每个串,有效查询最多只有n*26次,因此我们可以事先算出所有查询,原创 2017-06-27 15:38:52 · 299 阅读 · 0 评论 -
HDU 1024 Max Sum Plus Plus (dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1244题意:从1个n元素的序列中选出m个互不相交的连续子集,使得它们的和最大。思路:令dp(i, j)表示前j个元素选出i段(第j个元素必须选)的最大和,则有 dp(i, j) = max { dp(i, j-1)+a[j], dp(i-1, k)+a[j] }, 其中原创 2017-07-15 15:53:19 · 263 阅读 · 0 评论 -
HDU 1069 Monkey and Banana (dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1069题意:矩形嵌套的三维版,即长方体嵌套。有n种长方体,每种无限个,并且长方体可以滚动翻转。若长方体a的长和宽均小于长方体b的长和宽,则a可以摞在b的上面,求可以摞的最大高度 。思路:首先建立关系,若i可以摞在j上面,则由i向j连一条有向边。另dp(i)表示以i为地基的长方体所能摞的最大高度,原创 2017-07-15 21:23:53 · 300 阅读 · 0 评论 -
ZOJ 3329 One Person Game(概率dp 经典)
题目链接:https://vjudge.net/problem/ZOJ-3329#include#include#include#include#include#include#include#include#include#include#include#include#include#define fin freopen("a.txt","r",stdin原创 2017-08-19 10:07:12 · 423 阅读 · 0 评论 -
HDU 6006 Engineer Assignment (状态压缩DP)
/* 一共有N个工作,M个人。每个工作需要某些领域的知识,每个人都有自己精通的领域。给这些工作分配人,要求每个人最多只能分配一项工作,每个工作的若干人所精通的知识必须包含了该工作的知识, 问最多能分配几个工作。 将人的集合表示成二进制 dp[i][S]表示前i个工作,选的人的集合为S时,所完成任务的最大数量 则有dp[i][S] = max( dp[i-1][S], dp原创 2017-08-29 09:53:58 · 373 阅读 · 0 评论 -
UVa 242 Stamps and Envelope Size (完全背包)
题目链接:https://cn.vjudge.net/problem/UVA-242题意:一个信封最多能够贴s张邮票,现在有n个邮票的集合,求能够连续覆盖最大的值思路:最开始的天真的以为直接枚举邮资值会超时,因为这个值可能特别大。遂想到了dp(i,j)表示前i种有票用j张所能表示的最大的连续值,结果状态转移方程怎么写都写不对。最后看了题解才知道还是要从枚举邮资值入手。唉,现在怎么变得不敢暴原创 2017-02-15 15:06:11 · 525 阅读 · 0 评论 -
UVa 1629 Cake slicing (记忆化搜索)
题目链接:https://cn.vjudge.net/problem/UVA-1629题意:一个n行m列的蛋糕上有一些樱桃,每次可以水平或竖直切一刀,要求最后每块蛋糕上恰有一块樱桃,求最小切割长度。思路:用dp(r1, r2, c1, c2, k)表示当前矩形区域为[r1,r2],[c1,c2]且该区域有k块蛋糕时的最小切割长度。当k为1时,答案为0;当k>1时,递归的进行横切或者竖切即可原创 2017-02-14 15:08:25 · 608 阅读 · 0 评论 -
CodeForces 678C The Values You Can Make (3维DP)
C. The Values You Can Maketime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputPari wants to buy an expensive c原创 2016-07-09 10:38:28 · 799 阅读 · 0 评论 -
POJ 3311 Hie with the Pie(状态压缩DP)
Hie with the PieTime Limit: 2000MS Memory Limit: 65536KTotal Submissions: 6776 Accepted: 3652DescriptionThe Pizazz Pizzeria prides itself in delivering pizzas to原创 2016-08-18 19:48:28 · 280 阅读 · 0 评论 -
UVa 11584 Partitioning by Palindromes(DP)
题目链接:http://acm.hust.edu.cn/vjudge/problem/34398题意:给出一个字符串,把它划分成尽量少的回文串。没想到用O(n3)的暴力也能过,看来是数据太水。思路:dp[i]表示前i个字符能划分成的最小回文串数,设j#include#include#include#include#include#inclu原创 2016-08-19 18:59:13 · 328 阅读 · 0 评论 -
UVa 1401 Remember the Word (字典树, 动归)
题目链接:http://vjudge.net/problem/UV原创 2016-11-01 19:06:15 · 336 阅读 · 0 评论 -
单调队列与DP
以前以为单调队列只能求解区间最值的问题,没想到还能用于dp的优化,使循环的维度直接减去1维,将原先O(n³)复杂度的方程优化成O(n²)。最近几天刷了几道相关的题目,遂小小的总结一下。 首先,单调队列是一种单调递增或者单调递减的队列(如1、3、5、7、9是单调递增的队列)。对于单调队列的操作主要有三种:插入(从队尾插入一个新元素)、取最值(取队头的元素)、删除(从队头开始删除已经失效的元原创 2017-01-18 20:05:58 · 303 阅读 · 0 评论 -
UVa 1632 Alibaba (区间dp)
题目链接:https://cn.vjudge.net/problem/UVA-1632题意:给出n个点的坐标及各个点的消失时间,用最短的时间访问所有的点,求这一时间。思路:因为访问某个点是不费时间的,所以容易知道,访问过的一定是一个连续的区间。所以初步想到用dp[i][j][k]表示已经访问了区间i到j,现在位于k点的最短时间。但这样显然是不行的,时间和空间都容不下。再想发原创 2017-02-18 10:03:54 · 389 阅读 · 0 评论 -
HDU 4734 F(x) (数位dp)
F(x)Time Limit: 1000/500 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 4990 Accepted Submission(s): 1857Problem DescriptionFor a decimal number x原创 2017-02-11 17:25:37 · 305 阅读 · 0 评论 -
POJ 3252 Round Numbers(数位dp)
http://poj.org/problem?id=3252求区间[l,r]中二进制0的个数不小于1的个数的数的数目。简单数位dp。#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;原创 2017-02-11 20:29:08 · 357 阅读 · 0 评论 -
HDU 4035 Maze (概率DP)
/*lxhgww被困在迷宫里,迷宫是一棵n顶点的树,lxhgww初始在点1。每个点三种可能 1.被杀,回到起点1(概率为k[i]) 2.逃脱,即逃出迷宫(概率为e[i]) 3.随机的走一条与改点相连的边(包括它与它父亲相连的那条边求逃出迷宫期望的步数。设E[i]表示在结点i时期望的步数, fi表示点i的父亲, m表示点i的度数,j表示i的子节点 当i为叶子原创 2017-08-30 11:34:03 · 344 阅读 · 0 评论