tkdsheep-solution-0029

从 Trac 迁移的文章

这是从旧校内 Wiki 迁移的文章,可能存在一些样式问题,您可以向 memset0 反馈。

原文章内容如下:

宠物小精灵,宠物数量为n,精灵球的容量为m,给出宠物作战的顺序,要求最少的pick数,pick即指当一个宠物上场时,如果它不在精灵球内,则需要pick
作战完后可以选择把宠物放入精灵球或者不放,精灵球里的宠物也可以随时扔出去腾出空间给新的宠物

用上各种logn级别的数据结构即可,可以使用STL里面的map和priority_queue

首先用一个map维护,得到第i个上场的宠物,下一次上场是什么时候,即i的映射为next[i]

然后从第一个上场的宠物开始做,维护一个新的map和priority_queue,里面存的是当前在精灵球里的宠物

对于一个新的宠物i,如果它在map里(在精灵球里),那么更新这个宠物下一次上场的时间

如果它不在map里

那么就看精灵球的size是否还可以加新的宠物,可以就直接加

不可以就查看精灵球内下一次出场最晚的宠物,如果时间比这个新的宠物晚,则对他们做调换

宠物小精灵,宠物数量为n,精灵球的容量为m,给出宠物作战的顺序,要求最少的pick数,pick即指当一个宠物上场时,如果它不在精灵球内,则需要pick

作战完后可以选择把宠物放入精灵球或者不放,精灵球里的宠物也可以随时扔出去腾出空间给新的宠物

用上各种logn级别的数据结构即可,可以使用STL里面的map和priority_queue

首先用一个map维护,得到第i个上场的宠物,下一次上场是什么时候,即i的映射为next[i]

然后从第一个上场的宠物开始做,维护一个新的map和priority_queue,里面存的是当前在精灵球里的宠物

对于一个新的宠物i,如果它在map里(在精灵球里),那么更新这个宠物下一次上场的时间

如果它不在map里

那么就看精灵球的size是否还可以加新的宠物,可以就直接加

不可以就查看精灵球内下一次出场最晚的宠物,如果时间比这个新的宠物晚,则对他们做调换