
动态规划
文章平均质量分 58
湖心北斗2013
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
ZOJ Problem Set - 1016 parencodings
ZOJ Problem Set - 1016 ParencodingsTime Limit: 2 Seconds Memory Limit: 65536 KB Let S = s1 s2 ... s2n be a well-formed str原创 2013-07-09 00:58:57 · 799 阅读 · 0 评论 -
回文子序列 Palindromic Subsequence UVA 11404 动态规划 最长公共子序列
这题是最长公共子序列的变形,要注意的就是,题目要求输出最长上升子序列的字典排序最小值,最麻烦的就是这个,想了半天都没什么思路,我对最长上升子序列的理解不是很透彻。在网上看了别人的题解,都是用一个结构题来保存状态 (公共子序列的长度,公共子序列的串)我才恍然大悟,既然这样,那不是搜索一遍所有的状态的字符串就可以了吗。#include#include#include#include#inc原创 2013-09-23 22:21:47 · 843 阅读 · 0 评论 -
sum游戏 Game of sum uva 10891 动态规划 备忘录(记忆化搜索)
题目的大意是有一个整数组成的序列,两个人轮流取数,只能从一端取一个或者多个数(这里大白书上写错了),当所有的数都被取完的时候,取到的所有的数之和为该玩家的分数,求A的分数-B的分数,两个人都是以最优的方案取值。这个问题使用动态规划求解,子问题就是i~j的子序列先手取得的分数最大值。设d[i][j]表示子序列i~j的先手取数所获得的最大分数则d[i][j]=sum[i][j]-min(d[i+1原创 2013-09-19 14:41:10 · 1015 阅读 · 0 评论 -
uva 11401 Triangle Counting 数三角形 递推
这题刘汝佳大白书上的例题,自己总结一番,寻找递推关系。题意是从1~n中选择3个数,一共可以组成多少个三角形。1.组成三角形的条件是x+y>z,假设三角形最大的边是x则有x-y2.除去重复计算的值,因为y和z可以互换所以每个三角形被统计了两次,题目要求选出三个不同的整数,因此必须除去z=y的情况。如果y=z则有,x/2+1~x-1共有x-1-(x/2+1)+1=x/2-1个数。因此总原创 2013-09-18 21:36:14 · 731 阅读 · 0 评论 -
UVA 11584 Partitioning by Palindromes 动态规划 入门
这个题目的大意就是,给你一个字符串,然后让你求出最少的回文数。我开始傻逼了,写了一个o(n^3)的算法,结果老超时。然后略看了别人的题解,才知道有个如此的转移方程。f[i+1]=min(f[j]+1,其中j~i是回文),基础的动态规划题目,还得多多加强训练。#include#include#includeusing namespace std;#define MAXN 1010#原创 2013-09-20 00:43:29 · 744 阅读 · 0 评论 -
约瑟夫问题变形 And Then There was One, LA 3882 递推 动态规划
http://acm.hust.edu.cn/vjudge/contest/view.action?cid=31134#problem/B问题的大意是有n个数编号依次为1~n构成一个圈,第一次去掉编号为m的数字,以后没数到k把该数字去掉,问最后剩下什么数字。此题的解法是动态规划,递推。标准的约瑟夫问题是0~n-1的n个数从零开始,每数到k就把该数字去掉,随后剩下什么数字。我们可以将该题原创 2013-09-18 23:33:30 · 1275 阅读 · 0 评论 -
黑客的攻击 Hacker‘s crackdown UVA11825 状态压缩动态规划
题目的意思是有n台服务器运行着n类程序,一个黑客有n中类的病毒,最多每台服务器可以放一种病毒,但是相邻的服务器会感染同种病毒,只暂停一种服务,问能够暂停的程序的最大种数。解决的方法是,用位表示集合,问题的答案相当于是求出最多集合的组合,组合内的集合并集是全集。求这些组合最大的数目。转移方程式f[s]={f[s^s0],s0这种组合内的集合并集是全集}+1.这里涉及到一些集合的操作:或运原创 2013-09-19 17:44:48 · 953 阅读 · 1 评论 -
Prince and Princess UVA 10635 王子和公主 nlogn 求最长上升子序的长度
题目大意是求两个数列的最长公共子序,由于数列的长度可以达到250*250=62500所以在n^2的时间限内是不可能做到了,这需要一个nlogn的方法。由于每个数字都不相同,因此可以将其转化成求最长上升子序的问题。先记录下第一个序列的下标,然后再检查第二个序列,如果在第一个序列中已经被记录,则该元素是公共元素,但不一定是公共自序中的元素,将他放入一个数组当中,这个数组当中元素的顺序是依照第二个序列的原创 2013-09-19 13:29:38 · 1269 阅读 · 0 评论 -
南阳理工学院动态规划专题 回文字符串
这个问题使用动态规划求解,dp[i][j]表示字符串下标为i的字符和下标为j的字符区间内构成回文所需加入的最少的字符串。当str[i]==str[j]时,则dp[i][j]=dp[i+1][j-1],当str[i]!=str[j]时,dp[i][j]=min(dp[i+1][j]+1,dp[i][j-1]+1),初始化时候,d[i][i]=0,d[i][i+1]=1(这里真是纠结了一个多小时,原创 2013-08-07 23:49:33 · 835 阅读 · 0 评论 -
南阳理工学院动态规划专题 括号问题2 总结
南阳理工学院动态规划专题括号问题2总结这道题目初看起来很简单,但是我从看题到思考,到做题ac足足花了一个晚上加一个下午的时间,我也有到网上找代码的习惯,但是都是递归,特别蛋疼,我想用正统的动归去做,于是就开始了不一样的艰难探索之旅。分析过程:使用char str[1001]这个字符数组保存最初输入的括号序列,使用dp[1001][1001]这个数组保存中间结果,dp[i][j]的意思是原创 2013-08-07 20:31:11 · 789 阅读 · 0 评论 -
ZOJ Problem Set - 2109 FatMouse' Trade
ZOJ Problem Set - 2109FatMouse' TradeTime Limit: 2 Seconds Memory Limit: 65536 KB FatMouse prepared M pounds of cat food,原创 2013-07-09 16:59:03 · 527 阅读 · 0 评论 -
ZOJ Problem Set - 1076 Gene Assembly
ZOJ Problem Set - 1076Gene AssemblyTime Limit: 2 Seconds Memory Limit: 65536 KB Statement of the Problem With the large原创 2013-07-09 18:04:47 · 808 阅读 · 0 评论 -
ZOJ Problem Set - 1025 Wooden Sticks
ZOJ Problem Set - 1025Wooden SticksTime Limit: 2 Seconds Memory Limit: 65536 KB There is a pile of n wooden sticks. The le原创 2013-07-09 15:16:28 · 566 阅读 · 0 评论 -
ZOJ Problem Set - 1171 Sorting the Photos
ZOJ Problem Set - 1171Sorting the PhotosTime Limit: 2 Seconds Memory Limit: 65536 KB Imagine you have a pile of 1 <= N <=原创 2013-07-09 16:36:41 · 1074 阅读 · 0 评论 -
ZOJ Problem Set - 1108 FatMouse's Speed
ZOJ Problem Set - 1108FatMouse's SpeedTime Limit: 2 Seconds Memory Limit: 65536 KB Special Judge原创 2013-07-09 05:00:59 · 1197 阅读 · 0 评论 -
波浪子序列 Wavio Sequence UVA10534 动态规划 最长上升子序列变形
此题的大意是给定一个序列,求一个最长的奇数子序列,使得前k个序列上升,后k个序列下降。此题的解法是从左往右求一次最长上升子序列,然后从右往左再求一次最长上升子序列,分别记录在状态变量d1[i],d2[i],求min(d1[i],d2[i])的最大值即可,答案就是2*min-1。#include#include#include#include#includeusing name原创 2013-09-23 21:59:29 · 794 阅读 · 0 评论