题目解析
题目意思是:
你如果在第 i 秒捞了菜,则需要至少等待 m 秒,即最早在第i+m秒才能进行下一次捞菜。
这里有一个关键点就是,在第 i+m 秒,你可选择不捞菜,之后的时间里,你可以选择任意时刻捞菜,当然捞完后,又要重新等待m秒。
另外本题中,下的菜只有在煮到刚好合适时才能吃,早了或晚了就都不能吃了,这样的话,就不需要用优先队列了,只需要按照煮的菜刚好合适吃的时间点进行升序排序即可。
因此,本题的难度就大大降低了。
如下图,红色点表示菜刚好合适吃了,绿色点是捞菜,橙色是捞完菜后等待时间m
我这里模拟了两种捞菜方案:
- 捞第一个合适吃的菜,即从第1个合适的菜开始捞
- 不捞第一个合适吃的菜,即从第2个合适的菜开始捞
可以发现,两种方案最终捞到的菜数是一样的(每次只能捞一个菜)。
也就是说,你能捞多少菜,并不取决于你从哪个菜开始捞,而是刚好合适的菜之间的间隔时间,由于1和2菜的间隔时间小于m,因此只能二选一,无论你如何规划。
如果两个合适吃的菜的间隔时间大于等于m,则我们两个菜都能吃到,比如3和4,以及4和5。
因此,简单起见,第一个合适吃的菜我们必吃。
假设第k个合适吃的菜出现了,那么我们吃还是不吃呢?<