这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
2020-2021:teams:alchemist:sppc_16 [2020/05/10 22:25] mountvoom [E.Election Frenzy] |
2020-2021:teams:alchemist:sppc_16 [2020/05/10 22:35] (当前版本) mountvoom [G.Graphics Design] |
||
---|---|---|---|
行 68: | 行 68: | ||
至于边很多的处理,zzh鸽鸽曾经指导过。 | 至于边很多的处理,zzh鸽鸽曾经指导过。 | ||
- | 开一个并查集,如果$i$被遍历过,把他和$i + 1$合并在一起,每个并查集内的最大值表示这个并查集中唯一的一个还没有没遍历到的点。 | + | 开一个并查集,如果$i$被遍历过,把它和$i + 1$合并在一起,每个并查集内的最大值表示这个并查集中唯一的一个还没有没遍历到的点。 |
- | 对于边少的点直接遍历,边多的点也是暴力枚举,不过遍历过的点被合并后会使得区间越来越短,所以最终复杂度仍然是线性的。 | + | 对于边少的点直接遍历,边多的点也是暴力枚举,不过是按照并查集来枚举,枚举后被合并后会使得并查集个数越来越少,最终复杂度仍然是线性的。 |
by MountVoom | by MountVoom | ||
行 97: | 行 97: | ||
by Hardict | by Hardict | ||
===== G.Graphics Design ===== | ===== G.Graphics Design ===== | ||
+ | |||
+ | **题意:** | ||
+ | |||
+ | 这个题题意看了很久qwq。 | ||
+ | |||
+ | 每个学生有一个大项目,每个项目分为许多小项目,每个小项目都有一个优先级,优先级两两不同。 | ||
+ | |||
+ | 每个学生的小项目必须按顺序完成,每个项目对三种物品都有某种需求,但是每种物品最多只需要一个。 | ||
+ | |||
+ | 在某一时刻,如果当前的物品满足了某些项目的需求,那么选择优先级最高的项目执行,此时会借走物品。 | ||
+ | |||
+ | 每个小项目有一个执行时间$t$,如果它在第$x$时间开始执行,那么会在$x + t$时间结束并把物品归还。 | ||
+ | |||
+ | 求所有同学结束自己的项目的时间。 | ||
+ | |||
+ | **题解:** | ||
+ | |||
+ | 因为优先级两两不同,最终的顺序一定是确定的,直接模拟即可。 | ||
+ | |||
+ | 在这里我用一个优先队列维护执行的事项,按完成时间由小到大排序。 | ||
+ | |||
+ | 用8个优先队列维护待办项目,每个优先队列对应一种需求的项目,比如1维护只需要1号物品的项目,按照优先级由大到小排序。 | ||
+ | |||
+ | 如果只用1个优先队列维护项目可能会出现很多项目需求不能被满足但是优先级很高,导致反复插入删除引起超时。 | ||
+ | |||
+ | by MountVoom | ||
+ | |||
+ | |||
===== H.Hilbert's Hash Browns ===== | ===== H.Hilbert's Hash Browns ===== | ||
===== I.Intuidiff II ===== | ===== I.Intuidiff II ===== |