復盤|第308場周賽
和有限的最長子序列
【前綴和 + 二分】題目求的是子序列,且求和與元素在數(shù)組中的順序無關(guān),我們可以排序后,從小到大選擇盡量多的元素,其元素和不超過詢問值。
從字符串中移除星號
【?!啃枰紤]相鄰元素、有消除操作就用棧。
收集垃圾的最少總時間
【貪心 + 模擬】由于任何時刻只有一輛垃圾車處在使用狀態(tài),所以我們可以把每種垃圾分別處理,累加耗時。注意到,答案其實可以分為兩部分:所有垃圾的數(shù)目,即garbage中所有字符串的長度之和。根據(jù)每一種字符在garbage中最后一次出現(xiàn)的下標,即每輛垃圾車必須向右開到的房子的最小值,得到每輛車需要開的最短距離。
給定條件下構(gòu)造矩陣
【拓撲排序 + 構(gòu)造】數(shù)字之間的約束只發(fā)生在行與行、列于列,而行與列之間沒有直接約束,因此可以分別處理行與列中數(shù)字的相對順序。