將x+1後函式的差值放入優先佇列,每次的話就貪心選最小的,然後再更新差值放入佇列中維護。
其實說白了就是把m分為m次加1,每次都貪心選擇最小的那份。
但是結構體每次使用後都要改變,每次sort都會用時間。而優先佇列可以解決這個問題
優先佇列是stl中比較重要的乙個部分,用起來非常方便,在很多排序題中要比sort一遍一遍排序快很多。
它能根據自己定義順序來進行排序。
主要的兩種表達形式(其實還有其他的,這裡就先列舉兩個):
第一種是用friend bool operator來寫:
#include#includeusing namespace std;
#includetypedef struct node
}point;
第二種是用bool operator來寫。
#include#includeusing namespace std;
#includetypedef struct node
}point;
要注意的是上面的兩種都是從小到大來排順序!!程式裡面的大於小於號返回的是相反的。
大於號是從小到大排序,小於是從大到小排序,自己定義優先順序的時候一定要注意,跟其他地方的不太一樣,記住就好了。
注:第二種方法更好
易錯警示
注意就算x=0也有 c 值,一定不要忘記,wa了無數發
#include#includeusing namespace std;
typedef long long ll;
int n,m,u,v,w;
ll ans;
struct node
}fx;
priority_queuepq;
int main());
ans=ans+w;
}while(m--));
}printf("%lld",ans);
return 0;
}
參考鏈結 XDU校賽F(貪心 優先佇列)
既然代主席叫窩寫題解,窩當然得好好寫辣。原題 思路 其實最主要的問題是在記憶體滿的時候將誰彈出,也就是讓留在記憶體裡面的頁面盡可能得發揮作用。怎麼發揮作用?反正碰到相同頁面的能發揮作用了嘛。對記憶體裡面的所有頁面找里他下乙個相同頁面,刪除的時候當然是刪除下乙個頁面最遠的那個啦。然後貌似不太靠譜?可能...
2018CCPC網路賽A(優先佇列,思維)
include using namespace std priority queue q int main q.push 賣出 tmp x q.top first 如果前面沒有比它更小的,相當於放進去乙個標記為1的 如果有比它更小的,相當於執行買賣 if q.top second 1 除了第一次進佇...
題解 優先佇列優化貪心 CF2C
因為處理這個問號的時候具有不確定性,所以我們乾脆把所有的問號在一開始的時候全部初始化成右括號,這個時候再來看如果右括號多了,就可以把一些問號變成的右括號轉換成左括號,這個操作的代價就是 a i b i a i b i 分別表示把第 i 個括號換成左括號和右括號的代價,那麼就把所有的問號都用這種形式放...