ACM基础算法入门
32页1、ACM基础算法入门 基础动态规划 基础的 穷竭搜索 贪心的三种区间问题 数论那些事 二分的另类法 1 引言 算法简单但思想及其重要介绍的算法都堪称为经典中的经典 2 基础动态规划 多阶段决策过程最优化的数学方法三要素 阶段 决策 状态 3 动态规划的适用范围 最优子结构 最优化原理 当前状态依赖于前面的状态得到 是前面状态的完美总结无后效性 不成环 4 经典模型 数塔模型背包问题区间最大和模型最长非降子序列模型最长公共子序列数字归并 区间dp 旅行商问题 状态压缩 5 求解从顶到下经过节点的最大值是多少 6 解题思路 列状态v I j 表示走到第i层的第j个节点的最大值分阶段每一个层就是一个阶段状态转移方程 决策 V i 1 j V I j v I j 1 V I j v I j 1 7 单调递增非降子序列 给定一整型数列 a1 a2 an 0 n 100000 找出单调递增最长子序列 并求出其长度 如 1910511213的最长单调递增子序列是19101113 长度为5 8 解题思路 定义状态dp i 以i为结束节点最长单调子序列长度阶段每一个点选择过程即阶段转移方程 Dp i ma
2、x dp 1 i 1 1想想有没有更好的方法 9 dp总结 模型匹配法三要素法先确定阶段 数塔问题 先确定状态 一般题目都是 先确定决策 背包问题 10 贪心的三种区间问题 选择不相交区间区间选点区间覆盖 11 选择不相交区间 数轴上有n个开区间 ai bi 选择尽量多个区间 使得这些区间两两没有公共点 分析 首先明确一个问题 假设有两个区间x y 区间x完全包含y 那么 选x是不划算的 因为x和y最多只能选一个 选x不如选y 这样不仅区间数目不会减少 而且给其他区间留出了更多的位置 接下来 按照bi从小到大的顺序对所有区间排序 12 会场安排问题 先对n个区间按照bi从小到大的顺序排序 如果bi相同 则ai按照从大到小的顺序排序 然后从前往后扫描每个区间 找出所有的符合条件的区间 注意 排序后第一个区间一定会选 因为它的bi最小 它不影响后面区间的选取 而且如果不选此区间 最终求出的区间数目会变少 13 区间选点问题 数轴上有n个闭区间 ai bi 取尽量少的点 使得每个区间内都至少有一个点 不同区间内含的点可以是同一个 分析 如果区间i内已经有一个点被取到 我们称此区间已经被满足
3、受上一题的启发 我们先讨论区间包含的情况 由于小区间被满足时大区间一定也被满足 所以在区间包含的情况下 大区间不需要考虑 因此 我们把所有区间按b从小到大排序 b相同时a从大到小排序 则如果出现区间包含的情况 小区间一定排在前面 第一个区间应该选取哪一个点呢 正确的贪心策略是 取最后一个点 如下图 14 解题思路 根据刚才的讨论 所有需要考虑的区间的a也是递增的 我们把它画成上图的形式 如果第一个区间不选最后一个点 而是去中间的 如灰色点 那么把它移动到最后一个点后 被满足的区间增加了 而且原先被满足的区间现在一定被满足 这样才能保证选取的点最少 15 区间覆盖问题 数轴上有n个闭区间 ai bi 选择尽量少的区间覆盖一条指定线段 s t 分析 本题的突破口仍然是区间包含和排序扫描 不过要先进行一次预处理 每个区间在 s t 外的部分都应该预先被切掉 因为它们的存在是毫无意义的 例如要覆盖线段 3 5 闭区间 0 1 的存在无意义 在预处理后 在相互包含的情况下 小区间显然不应该被考虑 16 解题思路 把各区间按照a从小到大顺序 如果区间1的起点不是s 则无解 即 s t 无法被完全覆
4、盖 因为其他区间的起点更大 不可能覆盖到s点 否则选择起点在s的最长区间 选择此区间 ai bi 后 新的起点应该被设置为bi 并且忽略所有区间在bi之前的部分 就像预处理一样 虽然贪心策略比上面的题复杂 但是仍然只需要一次扫描 如下图5所示 s为当前有效起点 此前部分已被覆盖 则应该选择区间2 s 17 穷竭搜索是指将所有的可能性罗列出来 在其中寻找答案的方法 概念 这里 我们主要介绍 深度优先搜索 宽度优先搜索 基础的 穷竭搜索 18 深度优先搜索 深度优先搜索 DFS Depth FirstSearch 是搜索的手段之一 它从某个状态开始 不断地转移状态直到无法转移 然后回退到前一步的状态 继续转移到其他状态 如此不断重复 直至找到最终的解 根据深度优先搜索的特点 采用递归函数实现比较简单 19 例题 给定整数a1 a2 a3 an 判断是否可以从中选出若干个数 使他们的和恰好为k 限制条件 1 n 20 10 8 ai 10 8 10 8 k 10 8输入 41 2 4 713输出 Yes 输入 41 2 4 715输出 No 20 解题过程 i 3sum 2 i 1sum 1
《ACM基础算法入门》由会员日度分享,可在线阅读,更多相关《ACM基础算法入门》请在金锄头文库上搜索。
2024-02-26 33页
2024-02-26 30页
2024-02-26 31页
2024-02-26 31页
2024-02-26 23页
2024-02-26 29页
2024-02-26 31页
2024-02-26 33页
2024-02-26 34页
2024-02-26 33页