
动态规划
键盘上的精灵
这个作者很懒,什么都没留下…
展开
-
最长公共子序列(动态规划)
定义:一个数列 ,如果分别是两个或多个已知数列的子序列,且是所有符合此条件序列中最长的,则 称为已知序列的最长公共子序列。考虑最长公共子序列问题如何分解成子问题,设A=“a0,a1,…,am-1”,B=“b0,b1,…,bm-1”,并Z=“z0,z1,…,zk-1”为它们的最长公共子序列。不难证明有以下性质:(1) 如果am-1=bn-1,则zk-1=am-1=bn-1,且“z0,z1原创 2016-04-28 16:45:38 · 513 阅读 · 0 评论 -
HDU 1176 免费馅饼
Description都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼。说来gameboy的人品实在是太好了,这馅饼别处都不掉,就掉落在他身旁的10米范围内。馅饼如果掉在了地上当然就不能吃了,所以gameboy马上卸下身上的背包去接。但由于小径两侧都不能站人,所以他只能在小径上接。由于gameboy平时老呆在房间里玩游戏,虽然在游戏中是个身手敏捷的高手,原创 2016-04-28 16:49:09 · 374 阅读 · 0 评论 -
0-1背包(动态规划)
题意:有N件物品和一个容量为V的背包。第i件物品的体积是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。基本思路这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。用子问题定义状态:即f[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值。则其状态转移方程便是: f[i][v] = m原创 2016-04-29 08:16:13 · 503 阅读 · 0 评论 -
nyoj 16 矩形嵌套(DAG上的dp)
描述有n个矩形,每个矩形可以用a,b来描述,表示长和宽。矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a输入第一行是一个正正数N(0每组测试数据的第一行是一个正正数n,表示该组测试数据中含有矩形的个数(n随后的n行,每行有两个数a,b(0输出每组测试数据都输出一个数,表示最多符合条件的矩形数目,每组输出占一行样例输入1101 22 45 8原创 2016-05-03 09:33:35 · 490 阅读 · 0 评论 -
UVA 103 Stacking Boxes(DAG 上的最长路及其字典序输出)
题目大意:给定k个n维的盒子,求最多可以嵌套多少个盒子,类似于二维的盒子嵌套,对于n维的盒子稍作处理即可,首先将k个盒子看做k个点,建图,如果n维盒子X可以嵌套在n维盒子Y中,那么我们就从X到Y连一条有向边,对建好的图做记忆化搜索即可,输出时注意字典序输出。#include #include#includeusing namespace std;#define maxn 1000+10原创 2016-05-03 11:29:27 · 658 阅读 · 0 评论 -
nyoj 1023 还是回文(dp)
描述判断回文串很简单,把字符串变成回文串也不难。现在我们增加点难度,给出一串字符(全部是小写字母),添加或删除一个字符,都会产生一定的花费。那么,将字符串变成回文串的最小花费是多少呢?输入多组数据第一个有两个数n,m,分别表示字符的种数和字符串的长度第二行给出一串字符,接下来n行,每行有一个字符(a~z)和两个整数,分别表示添加和删除这个字符的花费所有数都不超过2000原创 2016-05-03 15:44:22 · 638 阅读 · 0 评论