EelAndRabbit

作者:杨家齐 徐明宽

关键词:离散化, 暴力

题目简述

河里有 条鱼, 每条鱼的速度都为 , 第 条鱼的长度为 , 并且会在 时刻出现在 坐标处. 也就是说, 对于任意的时刻 , 第 条鱼的头在坐标 处, 尾巴在 处.

你一直站在坐标 处, 并且计划抓(至多)两次鱼, 每次抓的时候你会同时把所有能抓到的鱼都抓上来. 你能抓到一条鱼当且仅当那条鱼在你的面前(包括头和尾).

求你最多能抓到多少条鱼.

限制与约定

.

算法一

实际上, 我们只需要考虑所有形如 的时刻 就可以了. 如果我们抓鱼的时间不能表示成这种形式的话, 我们可以通过改变时间 调整到这种形式(将其改为抓到的所有鱼的的最大值即可).

因此我们不妨枚举两次抓鱼的时刻 , 然后统计有多少条鱼能被抓上来, 并求出鱼的数量的最大值.

时间复杂度: .

算法二

我们可以将所有“事件”(每条鱼在时刻出现、在时刻消失)排序,这样枚举第一次抓鱼的时刻以后,从小到大枚举第二次抓鱼的时刻的同时就可以维护第二次能抓多少(第一次没抓上来的)鱼了。答案就是【第二次能抓的(第一次没抓上来的)鱼的数量的最大值,加上第一次抓上来的鱼的数量】的最大值。

时间复杂度: .

results matching ""

    No results matching ""