P9330 [JOISC 2023 Day1] Festivals in JOI Kingdom 2 题解
2209pengjing · · 题解
传送门
这是一道贪心算法的问题。
首先将所有的节日按照结束时间从小到大进行排序。对于每个节日,我们可以将其安排在结束时间最早的且未被安排过的一天,如果有多个选择,我们选择结束时间最早的一天。
为了实现这个贪心策略,可以使用一个数组记录每个日期是否被使用,从日期最小的开始遍历,找到第一个未被使用的日期即可。如果当前的日期已被使用,则继续向下一个日期遍历。
具体实现时,我们可以首先将所有节日按结束时间排序,然后定义一个数组 user,初始化为 false。接着依次遍历每个节日,对于每个节日,从结束时间往前逆推找到第一个未被使用的日期,将其标记为使用,并在 ans 中加入这个日期。
最后输出 ans 的长度即可。
时间复杂度为