博客
关于我
6.22 集训--DP复习一
阅读量:439 次
发布时间:2019-03-06

本文共 1150 字,大约阅读时间需要 3 分钟。

技术分析与解决方案

A. 拦截导弹简单版

题目描述

某国开发了一种导弹拦截系统,虽然第一发炮弹能到达任意高度,但之后每一发炮弹的高度不能超过前一发。敌方导弹来袭,系统需要尽可能多地拦截导弹,同时计算最少需要配备多少套系统才能拦截所有导弹。

解决思路

使用最长递增子序列(LIS)算法。我们可以正着和倒着各运行一次LIS,得到的结果即为最多能拦截的导弹数和系统数。

代码解析

代码中定义了两个数组 f1f2,分别用于存储正向和逆向的LIS长度。通过遍历每个导弹的高度,更新LIS长度并记录最大值,最后输出结果。

B. 挖地雷

题目描述

N个地窖之间有单向路径,需要找到一个挖地雷的顺序,使得能挖到最多地雷。

解决思路

使用动态规划和拓扑排序。定义 f[j] 为挖到编号为 j 的地窖的最大地雷数。通过拓扑排序,确保每个地窖的前驱已经处理,更新 f 数组。最后按拓扑顺序输出结果。

C. 飞翔

题目描述

在迷宫中,鹰需要从起点到终点找到最短路径。迷宫中的边分为普通边和特殊边,特殊边的处理需要优化。

解决思路

特殊边按横坐标排序后,使用LIS算法计算最长递增子序列的长度。普通边的数量乘以矩阵的宽度即为总路径长度。

代码解析

代码中定义了 ans 变量,用于存储LIS的最大长度。通过排序特殊边,计算LIS长度,并结合普通边数计算总路径长度,最后输出结果。

D. 麻烦的聚餐

题目描述

奶牛排队,卡片上的编号需要调整,使其成为一个合法的不下降序列。最少需要改动多少次卡片编号?

解决思路

使用LIS优化来计算最小改动次数。将卡片编号视为一个序列,计算其最长递增子序列的长度,然后用总长度减去LIS长度即为最少改动次数。

代码解析

代码中定义了 a 数组,存储卡片编号。通过LIS算法计算最大长度,并输出总长度减去最大长度的结果。

E. 奶牛渡河

题目描述

FJ需要将N头奶牛渡过河,每次渡河时间根据船上奶牛数目增加。最少需要多少时间才能完成任务?

解决思路

使用动态规划,计算每次运输的时间,并记录最优策略。最后输出总时间,减去最后一次渡河不需要返回的时间。

代码解析

代码中定义了 sumf 数组,用于存储每次运输的时间和最优时间。通过遍历奶牛数量,计算每次运输的时间,并更新最优时间。

F. 机器分配

题目描述

总公司有M台设备,分给N个分公司,每台设备分配给任意公司,总台数不超过M。如何分配才能使盈利最大?

解决思路

使用动态规划,逐公司处理,记录每台设备的最优分配方式。最终输出最大盈利值和设备分配方案。

代码解析

代码中定义了 a 数组,存储每个公司每台设备的盈利值。通过动态规划,逐公司处理,记录最优分配方式,最后输出结果。

以上是各个问题的分析与解决方案,希望能为您提供帮助。

转载地址:http://smpyz.baihongyu.com/

你可能感兴趣的文章
Objective-C实现hamming numbers汉明数算法(附完整源码)
查看>>
Objective-C实现hanning 窗(附完整源码)
查看>>
Objective-C实现hanoiTower汉诺塔算法(附完整源码)
查看>>
Objective-C实现hardy ramanujana定理算法(附完整源码)
查看>>
Objective-C实现harris算法(附完整源码)
查看>>
Objective-C实现haversine distance斜距算法(附完整源码)
查看>>
Objective-C实现highest response ratio next高响应比优先调度算法(附完整源码)
查看>>
Objective-C实现hill climbing爬山法用来寻找函数的最大值算法(附完整源码)
查看>>
Objective-C实现hornerMethod霍纳法算法(附完整源码)
查看>>
Objective-C实现Http Post请求(附完整源码)
查看>>
Objective-C实现Http协议下载文件(附完整源码)
查看>>
Objective-C实现ID3贪心算法(附完整源码)
查看>>
Objective-C实现IIR 滤波器算法(附完整源码)
查看>>
Objective-C实现IIR数字滤波器(附完整源码)
查看>>
Objective-C实现insertion sort插入排序算法(附完整源码)
查看>>
Objective-C实现integer partition整数分区算法(附完整源码)
查看>>
Objective-C实现integerPartition整数划分算法(附完整源码)
查看>>
Objective-C实现interpolation search插值搜索算法(附完整源码)
查看>>
Objective-C实现Interpolation search插值查找算法(附完整源码)
查看>>
Objective-C实现intersection交集算法(附完整源码)
查看>>