poj 动态规划的主题列表和总结
此文转载别人,希望自己可以做完这些题目。
1.POJ动态规划题目列表
easy:1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 1189, 1208, 1276,1322, 1414, 1456, 1458, 1609, 1644, 1664, 1690, 1699, 1740(博弈),1742,
1887, 1926(马尔科夫矩阵,求平衡), 1936, 1952, 1953, 1958, 1959, 1962, 1975, 1989, 2018,2029, 2039, 2063, 2081, 2082, 2181, 2184, 2192, 2231, 2279,
2329, 2336, 2346,2353, 2355, 2356, 2385, 2392, 2424,
不易: 1019, 1037, 1080, 1112, 1141, 1170, 1192, 1239, 1655,1695, 1707, 1733(区间减法加并查集),
1737, 1837, 1850, 1920(加强版汉罗塔),1934(所有最长公共子序列), 1937(计算几何),
1964(最大矩形面积,O(n)算法), 2138, 2151, 2161, 2178,
推荐: 1015, 1635, 1636(挺好的),1671,
1682, 1692(优化), 1704, 1717, 1722, 1726, 1732, 1770, 1821, 1853, 1949,2019, 2127, 2176, 2228, 2287, 2342, 2374, 2378, 2384, 2411
1015 Jury Compromise 1029 False coin 1036Gangsters 1037 A decorative fence 1038 Bugs Integrated, Inc. 1042 Gone Fishing1050 To the Max 1062 昂贵的聘礼 1074
Parallel Expectations 1080 Human Gene Functions1088 滑雪1093 Formatting Text 1112 Team Them Up! 1141 BracketsSequence 1143 Number Game 1157 LITTLE SHOP OF FLOWERS 1159 Palindrome
1160 PostOffice 1163 The Triangle 1170 Shopping Offers 1178 Camelot 1179 Polygon 1180Batch Scheduling 1185 炮兵阵地 1187 陨石的秘密 1189 钉子和小球 1191 棋盘切割 1192 最优连通子集 1208
The Blocks Problem 1239 Increasing Sequences 1240Pre-Post-erous! 1276 Cash Machine 1293 Duty Free Shop 1322 Chocolate 1323 GamePrediction 1338 Ugly Numbers 1390 Blocks 1414 Life Line 1432 Decoding MorseSequences 1456 Supermarket 1458 Common Subsequence 1475
Pushing Boxes 1485 FastFood 1505 Copying Books 1513 Scheduling Lectures 1579 Function Run Fun 1609Tiling Up Blocks 1631 Bridging signals 2 分+DPNLOGN 1633 Gladiators 1635 Subway
tree systems 1636 Prison rearrangement 1644To Bet or Not To Bet 1649 Market Place 1651 Multiplication Puzzle 1655Balancing Act 1661 Help Jimmy 1664 放苹果 1671 Rhyme Schemes 1682
Clans on the Three Gorges 1690(Your)((Term)((Project))) 1691 Painting A Board 1692 Crossed Matchings 1695Magazine Delivery 1699 Best Sequence 1704 Georgia and Bob 1707 Sum of powers1712 Flying Stars 1714 The Cave 1717 Dominoes 1718 River Crossing 1722 SUBTRACT1726
Tango Tango Insurrection 1732 Phone numbers 1733 Parity game 1737Connected Graph 1740 A New Stone Game 1742 Coins P 1745 Divisibility 1770Special Experiment 1771 Elevator Stopping Plan 1776 Task Sequences 1821 Fence1837 Balance 1848 Tree 1850 Code 1853 Cat
1874 Trade on Verweggistan 1887Testing the CATCHER 1889 Package Pricing 1920 Towers of Hanoi 1926 Pollution1934 Trip 1936 All in All 1937 Balanced Food 1946 Cow Cycling 1947 RebuildingRoads 1949 Chores 1952 BUY LOW, BUY LOWER 1953 World Cup Noise 1958 StrangeTowers
of Hanoi 1959 Darts 1962 Corporative Network 1964 City Game 1975 MedianWeight Bead 1989 The Cow Lineup 2018 Best Cow Fences 2019 Cornfields 2029 GetMany Persimmon Trees 2033 Alphacode 2039 To and Fro 2047 Concert HallScheduling 2063 Investment 2081 Recaman's
Sequence 2082 Terrible Sets 2084 Gameof Connections 2127 Greatest Common Increasing Subsequence 2138 Travel Games2151 Check the difficulty of problems 2152 Fire 2161 Chandelier 2176 Folding2178 Heroes Of Might And Magic 2181 Jumping Cows 2184 Cow Exhibition
2192Zipper 2193 Lenny's Lucky Lotto Lists 2228 Naptime 2231 Moo Volume 2279 Mr.Young's Picture Permutations 2287 Tian Ji -- The Horse Racing 2288 Islands andBridges 2292 Optimal Keypad 2329 Nearest number - 2 2336 Ferry Loading II 2342Anniversary party 2346
Lucky tickets 2353 Ministry 2355 Railway tickets 2356Find a multiple 2374 Fence Obstacle Course 2378 Tree Cutting 2384 HarderSokoban Problem 2385 Apple Catching 2386 Lake Counting 2392 Space Elevator 2397Spiderman 2411 Mondriaan's Dream 2414 Phylogenetic Trees
Inherited 2424 Flo'sRestaurant 2430 Lazy Cows 2915 Zuma 3017 Cut the Sequence 3028 Shoot-out 3124The Bookcase 3133 Manhattan Wiring 3345 Bribing FIPA 3375 Network Connection3420 Quad Tiling ?
http://www.gccfeli.cn/?
cat=5
[2]动态规划方法总结
1. 按状态类型分
写在前面:
从状态类型分。并不表示一题仅仅从属于一类。事实上一类仅仅是一种状态的表示方法。能够好几种方法组合成一个状态,来解决这个问题。
1.1. 编号(长度)动态规划共性总结:
本类的状态是基础的基础。大部分的动态规划都要用到它,成为一个维。
一般来说。有两种编号的状态:
1、状态(i)表示前i 个元素决策组成的一个状态。
2、状态(i)表示用到了第i个元素,和其它在1 到i-1 间的元素。决策组成有的一个状态。
题库:
a) 最长不下降子序列以一元组(i)作为状态,表示第i个作为序列的最后一个点的时候的最长序列。于是非常easy想到O(n2)得算法。但本题可合理组织状态,引入一个单调的辅助数组,利用单调性二分查找,优化到O(nlogn)。
关于优化详见优化章。一些问题可将数据有序化。转化成本题。
应用:拦截导弹(NOIP99 Advance 1) 就是原题。Beautiful
People (sgu199)。要将数据有序化:当中一个权作为第一keyword不下降排列。还有一个权作为第二keyword不上升。 Segment (ural 107 。将线段的左端点有序化就能够了。
b) 个字符串的第i 位,与第2 个字符串的第j 位匹配,得到的最长的串。若有多个串要LCS,则加维,即几个串就几个维。我也将此题归入路径问题。
c) 花店橱窗布置(IOI99) 见路径问题。
1.2. 区间动态规划共性总结:
本类问题与下一章的划分问题的决策的切割点无序交集比較大(占本类问题的30%)。题库:
a)石子合并见划分问题
b)模版匹配(CEOI01,Patten)
这题特殊的地方是状态的值是一个集合而不是一个数。
c) 不可分解的编码(ACMWorld Final 2002) d) Electric Path(ural1143) e) 邮局(IOI2000Day2 1) 若状态表示的思路从第i 个村庄能够从属于哪个邮局,无最优子结构。
转变一个方向:第k 个邮局能够“控制”一个区间的村庄[i,j]。
于是方程就显然了:
f(k,i,j)=min{f(k-1,p,i-1)+w(i,j)}(k-1<=p<=i-1)S(i) 为村庄i 到原点的距离。 w(i,j)=min{k|Sum{|S(k)-S(p)|}(i<=p<=j)}(i<=k<=j) 找到[i,j]间最好的一个邮局点。只是能够发现 Sum{|S(k)-S(p)|是单调的,所以取中位数就能够了。即上式中k 的取值范围仅仅有 floor((i+j)/2),
ceil((i+j)/2)两个。Floor是下取整。Ceil 是上取整。这样每次转移时间降到O(1)。注意到是区间连续的,即(p,i-1) 和(i,
j) 中的 i-1, i 是连续的。所以空间能够降维:f(i,j)表示放前i 个邮局到前j 个村庄的最优值。 f(i,j)=min{f(i-1,p-1)+w(p,j)}(i-1<=p<=j-1}
e(i,j) 为当f(i,j)到达最优值时的p.通过证明四边形不等式,得到e(i,j)<=e(i,j+1)<=e(i+1,j+1) 决策数量又少了一个数量级。
1.3. 坐标动态规划共性总结:之后的一些问题,状态是由坐标维与其它的维组成。
本类与划分问题(是2 维或多维的坐标系的划分)与路径问题的交集占本类问题中大多数。
题库: a) 棋盘切割(NOI99
4) 主要是将公式变形,变形后的公式非常easy看出方程。状态是由2 个坐标组成的4 元组 (x1,y1)(x2,y2)。表示一个子棋盘。
这有点像之前的区间动态规划,仅仅只是是将1 维转2 维。
后见路径问题。
1.4. 数轴动态规划共性总结:题库: a) 01 背包应用:装箱问题(NOIP01
Trade 4)就是原题。
值币切割可利用方程的性质。空间降1 维。币值可反复的值币切割(pku1742,
Problem F LouTianCheng’s Contest in POJ).使用左右法在定位上加速。另给状态加一个属性last,记录上一次剩下的可用的同币值硬币数(利用了当前转移是唯一前驱的特点)。 b) 取火柴问题(sgu153
Playing with matches) c) Stone Pile(ural1005Stone Pile) d) 公路巡逻(CTSC2000)
1.5. 5.树型动态规划共性总结:
1)动态规划的顺序一般依照后序遍历的顺序,即处理完儿子再处理当前节点,才符合树的子结构的性质。
2)多叉树转换为二叉树因为要分配附加维到各个节点,而分配附加维是个划分问题。若还是按当前节点到各个儿子节点分配,则成了一个整数划分问题,O(n2)。所以要把多叉树转换为二叉树。这样才干按动态规划的方式仅仅决策当前点的分配问题,
O(n)。
3)加当前点的选或不选的常数维加此维解决的是后效性问题。
条边关联起来(就是找到一条边,还有一条边的编号就知道)。用前向星表示法表示边(按起点有序),以后用边的时候。用了一条边打不可用标志,也将关联边打不可用标志。这样能够保证O(n)的时间完毕信息处理,并且在父节点找儿子的过程中带来非常大的方便。
5)复杂度树型动态规划复杂度基本上是O(n);若有附加维m。则是O(nm)。
题库:
a) 选课(CTSC97-3) 因为要分配课程数,所以要多叉树转换为二叉树。
b) 贪吃的九头龙(NOI02-3) 若小头数大于1 的话,则让不同的小头吃一段树枝的2 个端点。这样就把问题转化成:附加维是大头吃的个数,当前点由不由大头吃的常数维的动态规划。因为涉及划分问题,所以要多叉树转换为二叉树。
c) 求树的质心(sgu134 Centroid) 给出一棵边不带权的树,求点,使得去掉此点后,剩下的最大的连通子图的顶点数最小.
d) 求树中的点最远距离近期。给出一棵边带权的树。求树中的点,使得此点到树中的其它结点的最远距离近期。
Computer
Network (sgu149) Computer Net (ural1056)
1.6. 集合动态规划(状态压缩)共性总结:
1) 数据特殊性给出的数据在某一个或几个维度上一般具有比較小的范围(能够枚举一类的状态)。
一个枚举的状态是一个集合。
2) 编码由于集合中元素个数的不定性或范围大,直接开数组存,不好索引数组(编程复杂度太高)。所以要将集合编码。
利用数据的可枚举性,将枚举的状态(集合)编码。
一般来说码值的范围要非常小(尽量排除没用的码值。如炮兵:当前格和上格存在炮兵的情况是非法的,能够排除)。
规定编码的码值代表的意思,要尽量规定好维护的码值。
(如炮兵:当前格存在炮兵的用2,上格存在炮兵用1。这样下一层的规划时,仅仅要码值-1 就可以)。
有时候能够直接利用编码的顺序动态规划,由于这时编码已经是拓补有序。如TSP 问题当前已选点集合的状态的前驱的编码的值一定比当前的编码的值小。
3) 状态压缩对有限阶段的放置情况,行走情况编码(事实上质也是放置的集合或行走路线的集合),这样的编码,也有人谓之:“状态压缩”。此类题以“炮兵阵地”为典型,进行扩展。
题库
a) 购物(IOI95-2)可将每种物品按5 进制编码。(5 为每种物品数的上限)因为物品数的上限为5,比較小,也可直接开数组存。
b) Roger 游戏任务一(CTSC98 Day2 4)一个正方体在一个方格内的状态仅仅有24 种,并且能够通过顶面和前面来表示,这样用3 维的状态(x,y,p)就能够解决。p 为1 到24 种状态中的一种。
c) TSP 问题观察一下TSP 的搜索过程: for
(x in 未选点) TSP(x) 即当前路的最后一个节点为x,如今要选择下一个节点y,而y 要在未选点的集合中。
若未选点或已选点的集合已确定。则后效性消除。
能够DP。状态为令X 为当前路的已选点的集合(含 i)。当前路的最后一个节点为i。
2 元组(X,i)为经过已选点的集合X 到节点i 的最短长度。将X 编码就可以。
注意:并没有由于动态规划将问题从NP 类带到P 类。应用:
DNA Laboratory(Problem B,TU-Darmstadt ProgrammingContest 2004) 将每一个串的交迭部分求出。就能够将问题专成TSP,但要输出字典序最小的,则须要注意DP 顺序。
有详细的报告。
d) 炮兵阵地十分经典,详见报告。应用:
Another Chocolate Maniac(sgu132) 类似炮兵的做法的最值,仅仅只是是求最小值,麻烦点。 Hardwood floor(sgu131) 类似炮兵的做法的统计Little
Knights(sgu225) 类似炮兵的做法的统计,数据量太大要const
Little Kings(sgu223) 类似炮兵的做法的统计Bugs 公司(CEOI
2002) 类似炮兵的做法的最值
1.7. 利用动态规划思想求最值,编号(循环变量)的迭代共性总结:要利用上次的一些运算“剩下”的循环变量作当前循环的边界,主要在于找出一种决策顺序。使之成立。
题库:
a) 奶牛浴场 b) Communication System 将数据有序化,从大到小枚举带宽, 每次可利用上次处理的结果Min, 来决策当前状态。称作迭代, 或就是一种动态规划。 (zju1409,
Problem C Tehran 2002 Iran Nationwide InternetProgramming Contest)
1.8. 记忆化搜索题库
a) Magic Trick (Problem G, TU-Darmstadt ProgrammingContest 2004)
2. 按转移方式分
2.1. 存在性递推
1)01 统计(CTSC99 1)
2)卡特兰数 circle(sgu130) 3)鹰蛋
2.2. 求一系列的切割(合并)点(划分问题)
2.2.1. 决策的切割点有序共性总结:
a) 有序性每次决策的点的编号是有序的,即要按决策的顺序输出切割点的编号的话,编号是有序的,满足切割点的编号按升序排列。
b) 方程一般形式 f(n,m)=optimize{f(k,m-1)+w(k+1,n)} (n,m)表示从1到n 个点中划分为m 个部分的最优值;k 为决策的切割点,即第m个部分为 k+1 到n;这里optimize 能够为max,min。
题库:
a) 整数划分常应用在将一个权分配给一定的小切割块,如:将大堆的石子分成一定的小堆,小堆可为空。大堆要分完。有时应用在树型动态规划(二叉转多叉)中。
b) 乘积最大(NOIP00 Advance 2) 就是按上面的一般式的方程做。
2.2.2. 决策的切割点无序共性总结:
a) 无序性每次决策的点的编号是无序的。即要按决策的递归顺序输出切割点的编号的话,编号是无序的。
b) 方程一般形式 f(i,j)=optimize{f(i,k-1)+f(k+1,j)}+w(i,j) (i,j)表示从i到j 的范围内选取一个切割点k的最优值,子问题是切割点左边(i,k-1)和右边(k+1,j) 的点的范围的最优值;这里 optimize 能够为max,min。方程非常类似2 叉树的性质。
c) 四边形不等式此类的问题,有些可用四边形不等式优化。
见优化章
。
题库: a) 石子合并(NOI95
2) 经典,详见报告。
可用四边形不等式优化成O(n2),事实上还能够用类似堆的数据结构在O(nlogn) 的时间内完毕。但这就不是动态规划了。应用: a) 构造最优二叉排序树(CTSC96
2) b) 多边形(IOI9 这题值的正负号处理要注意,乘法运算。因为符号的增加,使原本的正的最优解,一下变成负的。 c) 加分二叉树(NOIP03
Advance 3) 方程就是一般式,转移的函数:w(i,j)=sum(i,k-1)*sum(k+1,j)+d(k)。
因为w(i,j)不满足凸单调性,所以不能用四边形不等式优化。
d) 括号序列(Problem
B, NEERC 2001) 这题的切割点不是一个元素。而是元素间的一条线。基本的思维方式是从递归定义。
2.3. 路径问题共性总结:
a) 行走方向决定阶段性有规定源点与终点。每次行走方向都有一定的规定,使原点到终点的全部路径形成无环有向图。
b) 多源或多汇当多源或多汇时,应该加维,使得每一个源。都有一个路径的状态与之相应。如有 n 个源的网格类问题。经常转态是(x1,y1)(x2,y2)…
(xn,yn)。可是源太多的话,空间上不同意,能够降问题转成网络流问题。
c) 双向动态规划因为有规定源点与终点。能够双向动态规划,但要考虑效果好不好,理论上是比原来少1/2。但有时因为可用于决策的状态较少,效果就不错了。
d) 决策稀疏性就是所谓走法。若对于一个状态,它的前驱或者后继数非常少(从无环有向图角度,就是入度或出度少),称决策稀疏。
e) 状态稀疏性就是非常多状态是没实用的,如排列的LCS,状态为2 维的(x,y),但对于一个x 仅仅有一个y 是有效个。
所以实质上状态数还是线形的。
本类一些技巧性的东西较多,在题库中详细说明。
题库:
a) 方格取数(NOIP00 advance 4) (x1,y1)(x2,y2)对角线空间优化b) 花店橱窗布置(IOI99) 我对本题有个小改造:若花瓶无序,怎样做,有序指:对于花束i<花束j, 花束i 相应的花瓶编号<花束j 相应的花瓶编号。
那么这样就是一个NP 问题了,可用后面的基于状态压缩的动态规划解决。
3. 动态规划的优化
3.1. 迭代
3.2. 四边形
3.3. 凸优化
poj 动态规划的主题列表和总结的更多相关文章
- poj 动态规划题目列表及总结
此文转载别人,希望自己能够做完这些题目! 1.POJ动态规划题目列表 容易:1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 11 ...
- poj动态规划列表
[1]POJ 动态规划题目列表 容易: 1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 1189, 1208, 1276, 13 ...
- POJ 动态规划题目列表
]POJ 动态规划题目列表 容易: 1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 1189, 1208, 1276, 1322 ...
- discuz个人空间主题列表 图片模式实现方法
discuz X3空间主题列表 图片展现模式,discuz实现个人空间主题列表调用图片模式,discuz home图片列表 如果需要实现该呈现方式,我们需要首先了解discuz封面图片存储原理:dis ...
- {POJ}{动态规划}{题目列表}
动态规划与贪心相关: {HDU}{4739}{Zhuge Liang's Mines}{压缩DP} 题意:给定20个点坐标,求最多有多少个不相交(点也不相交)的正方形 思路:背包问题,求出所有的正方形 ...
- POJ动态规划题目列表
列表一:经典题目题号:容易: 1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 1189, 1191,1208, 1276, 13 ...
- discuz如何修改主题列表页增加最后发表用户调用
首页有点问题,我觉得摘要实在太长了,我调整了一下 <!--{if is_array($group['lastpost'])}--> <a href="forum.php?m ...
- dp题目列表
此文转载别人,希望自己能够做完这些题目! 1.POJ动态规划题目列表 容易:1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 11 ...
- discuz学习,文件列表
文件颜色说明: 红色:程序核心文件,修改这类文件时千万要注意安全! 橙色:做插件几乎不会用到的文件,大概了解功能就可以了,其实我也不推荐修改这些文件 绿色:函数类文件,许多功能强大的自定义函数可以调用 ...
随机推荐
- input标签的hidden属性的应用及作用
定义:传输关于客户端/服务器交互的状态信息. Transmits state information about client/server interaction. 解释: 此元素在页面中不显示,在 ...
- Thinking in UML 学习笔记(一)——建立对象模型
一.面向对象的本质 面向对象的本质是抽象,当系统达到了超越其处理能力的程度,我们能够抽象出我们能够处理的范围来提成抽象级别,这样就能够构建更大.更复杂的系统. 现实世界和对象世界之间存在着一道沟壑,这 ...
- HTML+CSS - 搜索 And 高级搜索
- 实现长按删除QListWidget的Item
原地址:http://blog.sina.com.cn/s/blog_5c70dfc80100r99u.html 要想长按删除QListWidget的Item,必须重写鼠标事件,所以需要继承QList ...
- maven生成war包的两种方式
war包即对WEB应用程序进行打包,用于应用容器的部署.如在jboss中只要把war包丢入deploy目录下即可发布自己的应用了.打包方式有很多中,很多工具本身就支持此功能.下面主要介绍通过maven ...
- FindLetter 类——查找文件中特定的字符,每一行开头为某一个字符,则跳过
/*统计除了>之外的行里面CHED四个字母总数*/ #include<fstream> #include<iostream> #include<cstring> ...
- Maven 实现Struts2注解配置步骤详解
1,pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www ...
- KMP原理、分析及C语言实现
(是在matrix67博客基础上整理而来,整理着:华科小涛@http://www.cnblogs.com/hust-ghtao/) 有些算法可以让人发疯,KMP算法就是一个.在网上找了很多资料讲的都让 ...
- Delphi线程池
unit uThreadPool; { aPool.AddRequest(TMyRequest.Create(RequestParam1, RequestParam2, ...)); } inte ...
- LinearLayout具体解释二:LinearLayout的创建过程以及状态全程解析
正在撰稿中,请稍等...