一.dp

动态规划的本质

是一种思想。通过对原问题划分成子问题,寻找子问题之间的联系,通过求解子问题得出原问题的解。与贪心不同的是,动归是深谋远虑,考虑全局最优解;而贪心则目光短浅,只考虑局部最优解。

子问题 对应 状态

子问题之间的联系 对应 状态转移

边界子问题 对应 边界状态(状态转移的边界)

边界子问题:其结果不依赖其他子问题

求解动态规划类题目的要点

定义状态

寻找状态转移方程

边界状态

值得一提的是 动态规划中边界状态是可以由状态定义轻松得出 边界不能忽略。

动态规划的分类

按照常用套路的不同,可以对动态规划进行如下分类:

一维动规

背包动规

区间动规

树形动规

DAG动规


二.搜索

搜索的重点

搜索的实现

剪枝与优化

盲目搜索与启发式搜索

盲目搜索(只是搜索的顺序不同):

深度优先搜索 宽度优先搜索

启发式搜索:

A*算法

dfs

问题

1.深度问题

2.死循环问题

解决方法

1.对深度加以限制

2.记录从初始状态到当前状态的路径

深度优先搜索的性质

一般不能保证找到最优解 当深度限制不合理时,可能找不到解,可以将算法改为可变深度限制

最坏情况时,搜索空间等同于穷举

是一个通用的与问题无关的方法

节省内存,只存储从初始节点到当前节点的路径

bfs

优先扩展深度浅的节点 通常使用一个队列来实现

广度优先搜索的性质

当问题有解时,一定能找到解

当问题为单位耗散值,且问题有解时,一定能找到最优解

方法与问题无关,

效率较低

存储量比较大

迭代加深搜索

解决宽搜内存消耗大和深搜不能保证最优解的问题

分析:

宽搜内存消耗大是由于记录了搜索扩展的节点

深搜不能保证最优解是由于其扩展不是按照代价的顺序扩展的

所以我们需要:

不记录所有扩展节点

按照顺序扩展

解决办法:

枚举最大的代价,用深搜判断是否有解

启发式搜索

在OI中常常也被称为A*搜索

关键在于对当前局面作出预估,判断当前局面到目的局面至少还需要多少步

估价函数:估价函数的好坏决定了A*算法的优劣

学大伟业 Day 2 培训总结的更多相关文章

  1. 学大伟业 Day 1 培训总结

    第一天培训,讲的基本算法,东西很多.还有些数论,图论,数据结构and some small tricks 一.输入输出技巧 //输入输出技巧 /* scanf.printf:速度快,需要记忆不同数据类 ...

  2. 学大伟业 Day 6 培训总结

    今天接着昨天的继续讲数据结构 今天先是 分块 在统计问题中,尤其是序列问题,经常涉及到区间的操作,比如修改一段区间的元素,询问某个区间的元素的信息. 如果每次都对一整个区间的每一个元素进行操作的话,那 ...

  3. 学大伟业 Day 5 培训总结

    今天讲数据结构 先从mzx大佬的ppt摘抄一段: 数据结构是计算机存储.组织数据的方式.数据结构是指相互之间存在一种或多种特定关系的数据元素的集合. 通常情况下,精心选择的数据结构可以带来更高的运行或 ...

  4. 学大伟业 Day 3 培训总结

    今天讲的字符串: 不多说,直接看题 一.表达式求值 题目大意: 输入一行一个表达式,计算其答案 表达式包含非负整数.加减乘除.括号 两种做法 ·栈 ·表达式树 这里更推荐表达式树,因为栈是先压进去,逆 ...

  5. 学大伟业 Day 4 培训总结

    今天讲的全是dp... 不多废话,先看一道经典的模板LIS(最长不下降子序列) 一.LIS 给定一个长度为N的数列,求最长上升子序列 例:1 7 2 8 3 4 答案:1 2 3 4 代码: #inc ...

  6. 学大伟业Day1解题报告

    学大伟业Day1解题报告 张炳琪 一.   时间分配 T1:30分钟  T2: 60分钟  T3:100分钟 二.答题情况及错因 T1:100         T2:55             T3 ...

  7. 学大伟业 2017 国庆 Day1

    期望得分:100+100+20=220 实际得分:100+100+20=220 (好久没有期望==实际了 ,~\(≧▽≦)/~) 对于 a........a 如果 第1个a 后面出现的第1个b~z 是 ...

  8. 2017-10-23学大伟业Day1

    T1 叉叉 题目名称 叉叉 程序文件名 cross 输入文件名 cross.in 输出文件名 cross.out 每个测试点时限 1秒 内存限制 128MB 测试点数目 10 每个测试点分值 10 是 ...

  9. 学大伟业 国庆Day2

    期望得分:30+100+0=130 实际得分:30+100+20=150 忍者钩爪 (ninja.pas/c/cpp) [问题描述] 小Q是一名酷爱钩爪的忍者,最喜欢飞檐走壁的感觉,有一天小Q发现一个 ...

随机推荐

  1. Bootstrap 斜体、文本对齐、缩略图、地址、列表等

    目录1.标题2.页面主体3.强调    a.小号文本    b.着重    c.斜体    d.对齐class    e.强调class4.缩略语5.地址6.列表    a.无序列表    b.有序列 ...

  2. 《Python编程从入门到实践》_第十章_文件和异常

    读取整个文件 文件pi_digits.txt #文件pi_digits.txt 3.1415926535 8979323846 2643383279 下面的程序打开并读取整个文件,再将其内容显示到屏幕 ...

  3. 2、按钮:Buttons

    /* --- page1.html ---*/ <ion-content padding class="page1"> <h1>基本用法,实体框</h ...

  4. [Linq To Sql]解决join时的Collation冲突

    背景 现在两表 A:

  5. Scanners-Box:开源扫描器大全 2017-04-22

    Scanners-Box:开源扫描器大全 2017-04-22 Scanners-Box是一个集合github平台上的安全行业从业人员自研开源扫描器的仓库,包括子域名枚举.数据库漏洞扫描.弱口令或信息 ...

  6. IE浏览器下的渐变背景

    background: linear-gradient(to bottom, #000000 0%,#ffffff 100%);(标准) linear-gradient 在 ie9 以下是不支持的,所 ...

  7. Android 应用开发 之通过AsyncTask与ThreadPool(线程池)两种方式异步加载大量数据的分析与对比--转载

     在加载大量数据的时候,经常会用到异步加载,所谓异步加载,就是把耗时的工作放到子线程里执行,当数据加载完毕的时候再到主线程进行UI刷新.在数据量非常大的情况下,我们通常会使用两种技术来进行异步加载,一 ...

  8. Ruby系列文章之1---开发者应该熟悉的10个工具

    1. Git Git是进入Ruby这个生态圈首先最应该学会的工具.几乎所有以Ruby开发出来的套件都放在Github上.也就是不管你要下载或修改协作都需要透过Git. 2. RVM Ruby有很多种i ...

  9. 微软技术大会直播倒计时7天 | 地球上的IT咖们,正在慢慢向北京聚集

    去年,一句歌词火了:“我在北方的寒夜里,四季如春.”足以见得,北京的冬天,是可以把人冻蒙圈儿的. 然而有一群人,却正在慢慢靠近这样寒冷的北京,7 天后,他们将齐聚在北京. 他们来这里干什么?又是来见谁 ...

  10. 15分钟完成基于Azure公有云搭建远程测试环境