码迷,mamicode.com
首页 > 其他好文 > 详细

题解 P2827 【蚯蚓】

时间:2020-06-11 19:32:42      阅读:50      评论:0      收藏:0      [点我收藏+]

标签:反思   队列   大小   原因   ref   保存   问题   长度   最大的   

题意简述:

神刀手有很多蚯蚓,每次把最长的一条切成?$px$?和$x$-?$px$?两段。(显然p值大小是固定的,$x>=0$,所以这两段的大小关系不变)

要问的是

  1. $m$秒内,每一秒被切断的蚯蚓被切断前的长度(有$m$个数),输出时只要输出秒数是t的倍数的就行了
  2. $m$ 秒后,所有蚯蚓的长度(有 $n+m$ 个数)。只要依次输出从大到小排名是t倍数的就行了

做法:

我们用3个队列来保存数据,

  • q1存储剩下所有的没被切过的蚯蚓,

  • q2存储切出的所有?$px$?

  • q3存储切出的所有$x$-?$px$?

由于蚯蚓是不会越长越长的,所以每次刚切完的蚯蚓和之前切的蚯蚓相比较,?$px$?一定比之前所有的?$px$?要小,$x$-?$px$?一定比之前所有的$x$-?$px$?要小。

只要在第一次操作前排好序,每个队列中的蚯蚓就是按长度从大到小的。

对于第一个问题,每次只需比较每个队列中队首的蚯蚓,选出最大的弹出,切割后再放进各自的队列

对于第二个问题,每次比较每个队列中队首的蚯蚓,选出最大的弹出。

时间复杂度$O(nlogn+m+n)$ 可行

(我对我算的时间复杂度表示怀疑,有问题的话dalao可以拼命吐槽)


代码

代码请参考@世外明月 神仙的

我觉得ta写的比较简洁易懂


反思

  • 题目好长啊
    (对我来说TNT),虽然比什么大模拟好,但是要仔细读
  • 要找到问题所在,TLE的主要原因是每次找最大的时间太久,要找出隐藏的单调性

——$cz$

题解 P2827 【蚯蚓】

标签:反思   队列   大小   原因   ref   保存   问题   长度   最大的   

原文地址:https://www.cnblogs.com/zdsrs060330/p/13095089.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!