傳送門
題意:n個工作,每個工作有ddl和收益,每個時間點最多跟一項工作(該工作只消耗該時間點),求選擇某些工作能獲得的最大收益
題解:1. 「後悔法」:(留坑待填)
2. 蜜汁倒序貪心:
按時間倒著排序,ddl大的放前面,然後每一輪把ddl的相同的扔進優先佇列裡(權值大的在隊首),之後從後往前列舉時間點進行貪心。
考慮到每從優先佇列取出乙個元素就需要將ddl相同的元素的ddl減一(同乙個時間點只能幹一項工作),這個可能可以用資料結構操作...吧◔ ‸◔?。但是可以想乙個偷懶的方法--記錄當前考慮到的時間cur,沒取出乙個元素就cur--,減到跟下一輪ddl為止(因為再取出的話就要考慮下一輪ddl的元素)。
大概就是這樣......
#include#include#include#include#includeusing namespace std;
typedef long long ll;
const int n=1e6+4;
int n;
ll sum;
struct node
inline int read()
int main()
printf("%lld\n",sum);
return 0;
}
294 翻轉遊戲 II
題目描述 你和朋友玩乙個叫做 翻轉遊戲 的遊戲,遊戲規則 給定乙個只有 和 的字串。你和朋友輪流將 連續 的兩個 反轉成 當一方無法進行有效的翻轉時便意味著遊戲結束,則另一方獲勝。請你寫出乙個函式來判定起始玩家是否存在必勝的方案。示例 輸入 s 輸出 true 解析 起始玩家可將中間的 翻轉變為 從...
294 翻轉遊戲 II
你和朋友玩乙個叫做 翻轉遊戲 的遊戲,遊戲規則 給定乙個只有 和 的字串。你和朋友輪流將 連續 的兩個 反轉成 當一方無法進行有效的翻轉時便意味著遊戲結束,則另一方獲勝。請你寫出乙個函式來判定起始玩家是否存在必勝的方案。示例 輸入 s 輸出 true 解析 起始玩家可將中間的 翻轉變為 從而得勝。延...
Linux編輯器 vim的tag29 4
29.4查詢全域性識別符號 你正在編寫c程式,並且想知道乙個變數是被宣告為int或者unsigned。乙個發現這個的快速方法是使用 i命令。假設游標在column這個字上,輸入 i,vim會列出匹配的所有行。不僅僅在當前檔案,所有包含檔案,和包含檔案中包含的檔案,都會列出。這種方式相對於使用tags...