1. 程式人生 > >Robot Vacuum Cleaner (貪心、資料結構、sort中的cmp,建模+分析思維)

Robot Vacuum Cleaner (貪心、資料結構、sort中的cmp,建模+分析思維)

開始以為這種題是用dp寫的(以前模擬訓練寫到有類似於:多個字串,每個字串可以反轉,反轉一次要花一定得價值,反轉後會有一定得價值,問最多能有多少得價值,這題目是典型得dp,開dp[i][2],表示前i個字串:0表示不反轉,1,表示反轉的妝臺得到的價值,不斷轉移前面的價值,最後得出答案:ans=max(dp[n][0],dp[n][1])),但是這題,設計字串的拼接和組合,組合多樣化,並不像前面那題字串的拼接順序是一樣的,那麼觀察了一下樣例,好像都是s多的在前面哦,但是這樣的想法是錯的。s,h單關鍵量排序在前在後都不是正確的。然後又仔細分析了一下,如果對於一個字串,其內部的”sh“個數是一樣的,那麼對於這個串的貢獻=自己內部的子串+這個字串中的h值*前面所有的s個數,然而每個自己內部的個數是固定的,交換順序只改變相乘的部分。那麼問題轉化為求外部的sh串個數。那麼我們隨便想一想,這個串前面儘可能的多s,後面儘可能得小h,如果單單以s大排序或h小排序都不行,那麼就用s/h得關鍵詞來排序(這是一個貪心題目結構體排序中重要得一種模型)。所以隨便排下序好了。坑點:當一個小塊中h得個數為0時,直接設為inf