比较有趣的用点思维的题。

在学校和 DYS 一起推出来的题,庆祝 AT 复活写个题解。

感觉用无序列表列出自己思绪的过程很简洁扼要,但是行文节奏过快。介于我想重现自己今天上午的思路过程,这篇题解用对话体写出。


师:现在,让我们看 abc274F。给定 \(n\) 条鱼的初始位置、速度、重量,请任选一个时刻撒下一张长度为 \(A\) 的网,最大化网中鱼的重量和。时刻与撒网端点都不必是整数。\(n \leq 2000\)

A:有初始位置,匀速增长,区间求值……我想到了 P6405

B:P6405 要求的是恰好相等,相等具有传递性,但是网住没有传递性。能同时网住 AB 与能同时网住 BC 不意味着能同时网住 ABC。这个思路没法做下去。

师:我们已经迈出了第一步。想想看,为什么这个网看着难以处理?

A:时刻任意,位置任意,变量也太多了点!

B:但是 \(n\) 仅有 \(2000\),我们完全可以枚举其中一个再处理。

如果时间确定,能网住一条鱼的网的对应左端点是一个固定区间。如果位置确定,能网住一条鱼的下网时刻也是一个固定区间。问题变为:数轴上 \(n\) 条线段,每条线段有权值,求一个点让覆盖其的线段的权值和最大。这可以用线段树+离散化 \(O(n \log n)\) 解决。\(O(n^2 \log n)\) 是能接受的,只需要 \(O(n)\) 枚举其中一个变量。枚举哪个好呢?

A:我发现了一个性质。一定存在渔网左端点位于一条鱼上时的最优解。看起来,我们可以枚举那条鱼。

B:那么我们需要让位置确定。把其它所有鱼的速度减去这条鱼的速度,这条鱼就会相对静止,也就是这条鱼的位置不变,即下网左端点不变。运用上面说的方法,我们就能在 \(O(n^2 \log n)\) 内解决问题!

事实上,我自己开始看错题以为 \(x\) 给定,然后直接想到了确定一个数的做法,再结合 DYS 发现的性质,拼在一起,居然做完了题。有意识地简化问题,有时是通往正解的道路。

原文地址:http://www.cnblogs.com/purplevine/p/16822719.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性