复盘|第308场周赛
和有限的最长子序列
【前缀和 + 二分】题目求的是子序列,且求和与元素在数组中的顺序无关,我们可以排序后,从小到大选择尽量多的元素,其元素和不超过询问值。
从字符串中移除星号
【栈】需要考虑相邻元素、有消除操作就用栈。
收集垃圾的最少总时间
【贪心 + 模拟】由于任何时刻只有一辆垃圾车处在使用状态,所以我们可以把每种垃圾分别处理,累加耗时。注意到,答案其实可以分为两部分:所有垃圾的数目,即garbage中所有字符串的长度之和。根据每一种字符在garbage中最后一次出现的下标,即每辆垃圾车必须向右开到的房子的最小值,得到每辆车需要开的最短距离。
给定条件下构造矩阵
【拓扑排序 + 构造】数字之间的约束只发生在行与行、列于列,而行与列之间没有直接约束,因此可以分别处理行与列中数字的相对顺序。