




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、浅谈数据的合理组织浅谈数据的合理组织 引子引子 题目越来越难题目越来越难数据关系越来越复杂!数据关系越来越复杂! 对组织数据的要求越来越高!对组织数据的要求越来越高! 合理组织在解题中越来越重要!合理组织在解题中越来越重要! 【题意描述题意描述】 给出N个物品,每个物品都有一个权值(50000)和一个价格 (10000)。我们称可以直接被购买的物品为主件,称不能被直 接购买的物品为附件,附件只有当其主件被购买了才能被购买, 一个主件最多有两个附件,附件没有下一级附件。 【任务任务】 用不超过M元钱,购买一些物品,使得被购买的物品的总权值最 大。 金明的预算方案金明的预算方案 【数据规模数据规模
2、】 N60 M3200 题目中给出的主件与附件间形成树形结构,而所有的物品间形 成森林结构。为了方便起见,我们给所有的主件都加上一个“ 上级主件”,这样,所有的物品形成了一棵树。 数据的初步数据的初步组织组织 树形动态规划算法树形动态规划算法! 算法算法1 状态状态FijFij表示给以表示给以i i为根的子树,总共花费不超过为根的子树,总共花费不超过j j元,元, 所能取得的最大权值和。所能取得的最大权值和。 ? ? ? 枚举量太大,效率不高!枚举量太大,效率不高! 总花费不超过总花费不超过j 用用左儿子右兄弟表示法左儿子右兄弟表示法来表示这一棵树!来表示这一棵树! 时间复杂度为时间复杂度为
3、O(NMO(NM2 2) ) 状态总数状态总数 O(MN)O(MN) 状态转移代价状态转移代价 O(M)O(M) N*M*M=6*108,不太理想。,不太理想。 状态状态FijFij表示以表示以i i为根的子树总共花费为根的子树总共花费j j元能获得的最大权值和。元能获得的最大权值和。 我们只需要枚举给左子树分配多少钱,剩下的钱都分给右子树。我们只需要枚举给左子树分配多少钱,剩下的钱都分给右子树。 我们把配套的主件和附件看成一组。 这样,显然对于每一组,可能的购买方案最多只有如下五种: 我们换一种数据组织方式我们换一种数据组织方式 1.附件没有附件。附件没有附件。 2.每个主件最多只有两个附件
4、。每个主件最多只有两个附件。 考虑本题特殊条件: 1.什么都不买什么都不买 2.只购买主件只购买主件 3.购买主件和附件购买主件和附件1 4.购买主件和附件购买主件和附件2 5.全购买全购买 类似经典的类似经典的-背包问题!背包问题! 组织数据后,我们可以得到复杂度为组织数据后,我们可以得到复杂度为O(NM)O(NM)的优秀算法的优秀算法 状态总数状态总数 O(MN) 状态转移代价状态转移代价 O(1) 郁闷的金明郁闷的金明 【题意描述题意描述】 给出N个物品,每个物品都有一个权值(50000)和一个价格 (10000)。我们称可以直接被购买的物品为主件,称不能被直 接购买的物品为附件,附件只
5、有当其主件被购买了才能被购买, 主件可以有任意多附件主件可以有任意多附件,附件没有下一级附件。 【任务任务】 用不超过M元钱,购买一些物品,使得被购买的物品的总权值最 大。 【数据规模数据规模】 N60 M3200 题目放宽了“一个主件最多可以有两个附件”这个限制。 问题分析问题分析 数据组织方式数据组织方式依然适用效率 以物品为节点的树形结构 以组为元素的序列- 我们回想上题的数据组织方式。 重新安排这些物品的顺序,使得每个附件都紧跟其主件,保 证其前面的最近的主件就是它附属的主件。如下图: 数据组织方案二数据组织方案二 主件主件1附件附件主件主件2附件附件附件附件主件主件3附件附件附件附件
6、附件附件附件附件 树树序列序列 状态状态Fijk表示从第表示从第i个物品到第个物品到第n个物品,最多花费个物品,最多花费j元,元,k 表示表示i物品前面的主件有没有被购买,的最大价值和。物品前面的主件有没有被购买,的最大价值和。 这样组织数据以后,一个附件能被购买的必要条件是这样组织数据以后,一个附件能被购买的必要条件是“其前面的最其前面的最 近的主件被购买了近的主件被购买了”。 算法算法3 主件主件1附件附件主件主件2附件附件附件附件主件主件3附件附件附件附件附件附件附件附件 K=0 主件主件2没有被购买没有被购买K=1 主件主件2有被购买有被购买 状态总数状态总数 O(NM*2) 状态转移
7、代价状态转移代价O(1) 时间复杂度时间复杂度 O(NM) 算法算法3 重新组织数据后,我们再次成功地设重新组织数据后,我们再次成功地设 计出了计出了O(NM)的算法。的算法。 【题意描述题意描述】 给出N个物品,每个物品都有一个权值(50000)和一个价格 (10000)。我们称可以直接被购买的物品为主件,称不能被直 接购买的物品为附件,附件只有当其主件被购买了才能被购买, 主件可以有任意多附件,可以有多级附件。主件可以有任意多附件,可以有多级附件。 很郁闷的金明很郁闷的金明 【任务任务】 用不超过M元钱,购买一些物品,使得被购买的物品的总权值最 大。 【数据规模数据规模】 N60 M320
8、0 现在的题目在原题的基础条件上不仅增加附件的个数,还出现现在的题目在原题的基础条件上不仅增加附件的个数,还出现 了多级附件。了多级附件。 问题分析问题分析 这是很一般的树!这是很一般的树! 一般的树形结构,我们还能不能用前面的数据组一般的树形结构,我们还能不能用前面的数据组 织方式呢?织方式呢? 数据组织方式数据组织方式依然适用效率 以物品为节点的树形结构 以组为元素的序列 附件紧跟其主件的序列 说明这些数据组织方式都说明这些数据组织方式都不合理不合理,需要再次重新组织数据!,需要再次重新组织数据! 现在我们再回过头来研究一下前面一种数据组织方式: 把同在一个组的主件放在附件的前面,将树形问
9、题转化到序 列上来。 而现在的问题是:树的高度增加了。树的高度增加了。 组织数据方案三组织数据方案三 考虑:考虑:树的先根遍历序。树的先根遍历序。 仔细思考算法仔细思考算法3的状态转移:的状态转移: 主件主件1附件附件主件主件2附件附件附件附件主件主件3附件附件附件附件附件附件附件附件 K=0 迁移到本题中,对于一棵子树,如果我们迁移到本题中,对于一棵子树,如果我们 不购买其根结点,那么其子孙都不必讨论不购买其根结点,那么其子孙都不必讨论 了(因为其子孙节点都不能被购买)了(因为其子孙节点都不能被购买) 但是我们不能用加一维的方法来记录每但是我们不能用加一维的方法来记录每 个附件的主件是否被购
10、买了!个附件的主件是否被购买了! 这一结论似乎很显然,但是我们并不是要在树形 结构中运用这一结论。 正如上面提到的,我们要在树的先根遍序上进行动动 态规划态规划,而这一结论正是我们成功的关键。 状态Fij表示在遍历序列遍历序列中从第i个物品到第n个物品,最多 花费j元,能得到的最大权值和。 算法算法4 主件主件1附件附件主件主件2附件附件附件附件主件主件3附件附件附件附件附件附件附件附件 没有购买根结点!没有购买根结点! 直接直接“跳跳”过去!过去! 状态总数状态总数 O(NM) 状态转移代价状态转移代价O(1) 时间复杂度时间复杂度 O(NM) 重新组织数据后,我们再一次优解此题。重新组织数
11、据后,我们再一次优解此题。 算法算法4 这样,实际上我们避开了这样,实际上我们避开了“记录主件状态记录主件状态” 的问题!成功地实现了状态的合法转移的问题!成功地实现了状态的合法转移 小结小结 树形结构树形结构树形动态规划树形动态规划O(NM2) 线形结构线形结构 合理地组织数据合理地组织数据 线形动态规划线形动态规划O(NM) 【题意描述】 给出一棵有N个节点的有根树(根为1号节点),每个节点有权 值。 要求对于每一个节点,求: 1.其子树中权值比该节点大的节点总数 2.树上所有比该节点大的节点总数 3.从根节点到该节点路径中比该节点大的节点总数 其中(1=N=105) 树的果实树的果实 问
12、题分析问题分析 树形上的统计问题!树形上的统计问题! 序列上的统计问题。序列上的统计问题。 对数据的初步组织对数据的初步组织 我们进行新的组织数据的尝试我们进行新的组织数据的尝试:利用先根遍历序将树转化:利用先根遍历序将树转化 为序列,因为这样,为序列,因为这样,同一棵子树构成一个连续的区间同一棵子树构成一个连续的区间,这,这 是一个非常好的性质。是一个非常好的性质。 问题转化为:问题转化为:在一个由整数构成的序列上,进行在一个由整数构成的序列上,进行N次区间询次区间询 问。询问一个区间中有多少元素的权值比给定的值大。问。询问一个区间中有多少元素的权值比给定的值大。 在组织后的数据中尝试求解在
13、组织后的数据中尝试求解 我们直接在组织成序列的数据中进行统计。可以利用以我们直接在组织成序列的数据中进行统计。可以利用以 有序表为元素的线段树!有序表为元素的线段树! 每次统计的时间复杂度为每次统计的时间复杂度为O(log22(N) 总的时间复杂度为总的时间复杂度为O(Nlog22(N) 预处理预处理归并排序归并排序O(Nlog2(N) 我们重新考虑转化后的问题。 进一步组织数据进一步组织数据 答案即是区间中的元素个数!答案即是区间中的元素个数! 这是线段树和树状数组的看家本领这是线段树和树状数组的看家本领! 考虑一种特殊的情况:考虑一种特殊的情况: 当前的序列中所有元素的权值均大于给定的值。当前的序列中所有元素的权值均大于给定的值。 一个很巧妙的方法:从大到小地向线段树里面依次加入元从大到小地向线段树里面依次加入元 素,边加边统计。素,边加边统计。 32451766 76654311 32451766 排序排序 依次插入并统计依次插入并统计 32451766 这样,我们的总时间复杂度为这样,我们的总时间复杂度为O(Nlog2(N) 小结小结
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医疗器械临床试验质量管理规范化在2025年的临床试验监管政策变化趋势报告
- 2025年城市公园改造提升项目社会稳定风险评估与风险评估方法改进研究综述报告
- 生态农业可持续发展模式与技术创新报告
- 2025年元宇宙社交平台虚拟现实与虚拟现实教育游戏化应用研究报告
- 2025年元宇宙社交平台虚拟现实社交平台内容创新研究报告
- 共享办公空间增值服务在智慧旅游中的应用策略报告
- 2025年医院信息化建设电子病历系统用户体验优化研究报告
- 细胞因子靶点发现与验证技术2025年应用分析
- 2025年医药行业CRO模式下的临床试验法规更新与合规应对报告
- 2025届咸阳市重点中学英语七下期末调研模拟试题含答案
- 2025年陕西省中考数学真题试卷及答案解析
- 呼吸机的维护与保养标准流程
- 2025年北方华创招聘笔试参考题库含答案解析
- 期末综合试题 2024-2025学年下期初中英语人教版七年级下册(新教材)
- 2025年全国新高考I卷高考全国一卷真题英语试卷(真题+答案)
- 高中生物学业水平合格性考试:人教版必修1+必修2必背考点
- 安全生产应急演练方案(合集)
- 2025江苏扬州宝应县“乡村振兴青年人才”招聘67人笔试模拟试题含答案详解
- 2025年甘肃高考真题化学试题(解析版)
- 中国政法大学《中国政治制度史》2023-2024学年第二学期期末试卷
- 超高玻璃吊装方案(3篇)
评论
0/150
提交评论