- 1、本文档共2页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
《平坦的虚线》解题报告
转换问题条件:
本题看似无从下手,但是可以发现一个特殊的情况:折线与x轴夹角的范围
是[-45°,45°],范围大小正好相当于[0,90°],这启发夹角的范围转
换成[0,90°],这样可以使问题更直观。
将坐标轴沿逆时针方向旋转45°,这样问题的其它条件不变,只是虚线与x
轴夹角的范围变成[0,90°]。这样虚线中每一个点与上一个点连线与x轴的夹
角范围必须是[0,90°],换一种说法就是虚线中每个点只能一个的右上方。
具体说就是每个点的横纵坐标必须都小于或等于虚线中前一个的横纵坐标。
对应原有问题:
以前曾经有过一道类似的问题:《》。对于这道问题,如果采用每次
找出一个最长不下降子序列的贪心算法,不一定能得到最优解。一个简单的反例
就是:的高度分别是(按先后顺序)2,2,3,1,2,4,按以上的贪心做法
得到的结果是三次,2-2-2-4,3,1,然而实际上的最优方法应该是两次
,2-2-3,1-2-4。
方法1、这样的贪心算法虽然是错的,但我们不能就此排除采用贪心算法,因为
还可能有正确的贪心策略。我们考虑如下的一种贪心策略:记录下当前每一架高
射的高度,对于当前的,如果没有一架可以,则增加一架;
否则,选择能到它的高射中当前高度最大的一架,同时更新记录。例
如对于以上的例子,算法的工作情况如下:
当前每架高射的高度当前的高度方案
2增加一架高射
22选择当前高度为2的高射
23选择当前高度为2的高射
31增加一架高射
1,32选择当前高度为1的高射
2,34选择当前高度为3的高射
这样一共使用了两架高射。使用这个算法,我们可以解决《》问
题。
现在,我们回到原有的问题,可以发现这道题也可以采用上面说的第二种贪
心算法解决。现将所有点按横坐标大小排序,横坐标相同的点按纵坐标大小排序。一
开始高度集合H为空,以后对于每个点,若H中没有一个数小于这个点的y坐
标,则将y坐标加入到H集合中,虚线数加1;否则在H中寻找小于y坐标值且
最接近y坐标值的数,用当前点的y坐标值替换H中选取得数。
数据结构:
如果用线性表实现集合H,算法的时间复杂度是O(N^2),由于题目中n的范
围很大,显然题目的条件。由于这道题的查询工作有一定的特殊性:要
在集合中寻找小于且最接近于一个数的数,因此一些高效的数据结构如堆等都不
能满足要求,所以我们只能采用一种比较灵活的高效数据结构:树状数组。实现
的时候可以采用二叉排序树,这样算法的空间复杂度是O(N),时间复杂度是
O(NlogN)。
方法2、
方法1虽然可以解决问题,但是否还有更简单的方法呢?
定理:一个序列中最长上升子序列的长度等于不降子序列的最小
文档评论(0)