20170520 DP阶段总结

  DP的力量不是无穷的。

  但是,因为它叫做“动态规划”,它在OI界如鱼得水。这个“动态”不是指“离线”与“在线”,也不是什么“可持久化”。它只是把问题抽象为一个个“阶段”,在每一个“阶段”中作出或繁或简的“决策”,并以此实现“状态”与“状态”间的“转移”。

  正如紫书所言,动态规划的理论性和实践性都很强,一方面需要理解“状态”、"状态转移"、“最优子结构”、“重叠子问题”等概念,另一方面又需要根据题目的条件灵活设计算法。

  “根据题目的条件灵活设计算法”,可以说

希望是本无所谓有,无所谓无的。这正如地上的路;其实地上本没有路,走的人多了,也便成了路。

——鲁迅

  也可以说,对动态规划的掌握情况在很大程度上能直接影响一个选手的分析与建模能力。



  分析与建模,是一种十分重要的能力。刘汝佳说,难题无外乎分三种:

  • 难想的
  • 难做的
  • 难调的

  分析与建模,便在很大程度上是关于“思考”。所以伟大的Scanf说,你写出了转移方程,就可以了。

  但真的是“可以”了吗?我的答案是否定的。

  因为其实,想、做、调三者应该是一体的。(在此时Scanf让我们提意见,ZJC说进新机房,臣附议)

  DP优化就是一个典例。因为出题人的缘故(满满的仇恨感),每一次决策的时间必须压缩,或是要简化状态本身。空间就是一个极大的牺牲品。DP本身即建立在“MLE”与“TLE”的夹缝之中,所以每一次优化总是让人伤透脑筋。只要一点没有想清楚,想要“做出来”便很难,“调出来”往往更难。

  所以,DP之伊始即是“分析与建模”。对于这类问题,Scanf总是说:“我们的同学是有思路的~只是实现能力没有起来~”

  其实,任何代码在开始前思路便能很清楚,甚至精确到行,那么实现往往不是大问题。然而“我们的同学”(包括我)更多时候只是“有思路”,且不说“思路”正确与否,即使正确也很难一步到位。

SCOI 2017 酱油记

April 9, 2017

省选终于考完了啊。。
Day1:
先用10分钟浏览了一遍题
看了看t1,感觉贪心好像是对的啊,写了个堆搞一搞
再看t2,最近点似乎可以用点分,再加个树剖维护第一个未签到点,于是码码码,码完3.5h了
一看t3,卧槽计算几何啊。。写了发暴力。然后想到一个n^2sqrt的kd树做法,后来没调出来
最后230
Day2:
又先用10分钟浏览了一遍题
t1切了
t2是两道题加起来的,都可以O(n),然而我都只会nlog,于是T了40
t3写了一个能过大样例的n^2log暴力,但最后只得了10分。。orz
最后170
总分400,似乎挺靠前的

  仔细看看上面这段,MCFX同学的总结,你并不能看出他有任何的“特异功能”,遇到题目很多时候也会卡壳。但是他会深入的思考,会分析,会实践。

  再次反观我,我很多时候太急了,没有掌握好节奏,没有真正想清楚,效率就总是很低。

  当然,也不能一刀切,常常在码题的时候,灵光一闪,没准就创造了一种新算法。



  动态规划是一种用途很广的问题求解方法,它本身并不是一个特定的算法,而是一种思想,一种手段。动态规划的核心是状态和状态转移方程。遇见原问题,就把它分解为相对简单的子问题。

  最优子结构性质,子问题重叠性质,无后效性。

  从递推开始,再到背包,LIS,LCS。

  之后是区间DP。

  终于树形DP来了。(DAG的拓扑性质)

  不厚道的就来了:

    FLOYD,(结合图论)

    数位DP,(数的统计)

    状压DP,(结合二进制)

    概率DP,期望DP,(结合数学)

  既然可以结合数学,那为什么不结合数据结构啊?或者不结合数据结构,直接简化?

  • 倍增优化
  • 单调队列优化
  • 斜率优化
  • 四边形不等式优化
  • ......

  但是,还有,插头、轮廓线……DP是人总结出来的,是永无止境的。

时间: 2024-10-25 16:12:56

20170520 DP阶段总结的相关文章

训练指南DP阶段训练1

最近又忙又颓.............时间抓不紧....下学期开始就要准备考研了.......就2个月左右可以做自己喜欢的事了....争取把紫书和白书没做的,做过的..来一次完整的总结 训练指南上面的5个例题+后面15个习题是第一阶段 vjudge训练地址 http://vjudge.net/contest/139533#overview -------------------------------------------------------------------------------

【听课记录】17-7-11 动态规划 - 朱全民

此文转载时必须通知博主,并把原文链接及原作者放在正文醒目位置. ————————动态规划初步———————— 一.常见动态规划:求最优解.次优解:统计问题. 二.DP模型:线型- 一条直线.两条直线.多条直线(二维矩阵).树型- 明显能够构成一棵树.多叉树转二叉树:孩子兄弟表示法.图型- 以图为模型.基于连通性的状态压缩DP(哈密顿环).集合类型 三.DP概念:阶段.状态.决策.状态转移.最优化原理.无后效性原理. 四.步骤划分阶段—设置状态—状态转移方程—(优化决策) 五.例题分析 —————

九度1131:合唱队形

********************************************************************************** 晒题: 题目1131:合唱队形 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:5059 解决:1601 题目描述: N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学不交换位置就能排成合唱队形.合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1, 2, -, K,他们的身高分别为T1,

UESTC 2016 Summer Training #2 Div.2 A dp、递推、多阶段问题

A - A Time Limit:336MS     Memory Limit:1572864KB     64bit IO Format:%lld & %llu Submit Status Practice SPOJ AMR11A Description Thanks a lot for helping Harry Potter in finding the Sorcerer's Stone of Immortality in October. Did we not tell you that

数位dp

1.[hdu3709]Balanced Number 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<string> 5 #include<cstdlib> 6 #include<algorithm> 7 #include<ctime> 8 #include<cmath> 9 #include<queue>

算法学习三阶段

?? 第一阶段:练经典经常使用算法,以下的每一个算法给我打上十到二十遍,同一时候自己精简代码, 由于太经常使用,所以要练到写时不用想,10-15分钟内打完,甚至关掉显示器都能够把程序打 出来. 1.最短路(Floyd.Dijstra,BellmanFord) 2.最小生成树(先写个prim,kruscal 要用并查集,不好写) 3.大数(高精度)加减乘除 4.二分查找. (代码可在五行以内) 5.叉乘.判线段相交.然后写个凸包. 6.BFS.DFS,同一时候熟练hash 表(要熟,要灵活,代码要

DP总结 ——QPH

常见优化 单调队列 形式 dp[i]=min{f(k)} dp[i]=max{f(k)} 要求 f(k)是关于k的函数 k的范围和i有关 转移方法 维护一个单调递增(减)的队列,可以在两头弹出元素,一头压入元素. 队列中维护的是两个值.一个是位置,这和k的范围有关系,另外一个是f(k)的值,这个用来维护单调性,当然如果f(k)的值可以利用dp值在O(1)的时间内计算出来的话队列中可以只维护一个表示位置的变量. 枚举到一个i的时候,首先判断队首元素的位置是否已经不满足k的范围了,如果不满足就将队首

拦截导弹(南阳oj)(dp最长下降子序列)

拦截导弹 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 某国为了防御敌国的导弹袭击,发展中一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于等于前一发的高度.某天,雷达捕捉到敌国导弹来袭.由于该系统还在试用阶段,所以只用一套系统,因此有可能不能拦截所有的导弹. 输入 第一行输入测试数据组数N(1<=N<=10) 接下来一行输入这组测试数据共有多少个导弹m(1<=m<=20) 接下来行输

自己动手写CPU之第七阶段(2)——简单算术操作指令实现过程

将陆续上传本人写的新书<自己动手写CPU>,今天是第25篇,我尽量每周四篇 亚马逊的预售地址如下,欢迎大家围观呵! http://www.amazon.cn/dp/b00mqkrlg8/ref=cm_sw_r_si_dp_5kq8tb1gyhja4 China-pub的预售地址如下: http://product.china-pub.com/3804025 7.2 简单算术操作指令实现思路 虽然简单算术操作指令的数目比较多,有15条,但实现方式都是相似的,与前几章逻辑.移位操作指令的实现方式也