XDU校賽F(貪心 優先佇列)

2021-08-19 05:33:42 字數 937 閱讀 6254

既然代主席叫窩寫題解,窩當然得好好寫辣。。

原題:思路:

其實最主要的問題是在記憶體滿的時候將誰彈出,也就是讓留在記憶體裡面的頁面盡可能得發揮作用。。

怎麼發揮作用?反正碰到相同頁面的能發揮作用了嘛。。對記憶體裡面的所有頁面找里他下乙個相同頁面,刪除的時候當然是刪除下乙個頁面最遠的那個啦。。

然後貌似不太靠譜?可能很多人都考慮到這種情況,例如有2個記憶體,請求是123122222這樣的,把3打入記憶體時可能覺得保留2也是個不錯的方案?我們不妨這麼想,第3個以後的2都是上乙個2所作出的貢獻而不是第1個2,那這樣的話記憶體裡面的頁面就只能做一次貢獻,而做完貢獻他們就會被新頁面重新整理,這樣的話顯然要優先保留下乙個頁面離得比較近的了。。。

#include#define inc(i,l,r) for(int i=l;i<=r;i++)

#define dec(i,l,r) for(int i=l;i>=r;i--)

#define inf 2147483647

#define mem(a) memset(a,0,sizeof(a))

#define ll long long

#define nm 100010

#define nm 1000000

#define link(x) for(edge*j=h[x];j;j=j->next)

using namespace std;

int read()

while(isdigit(ch))x=x*10+ch-'0',ch=getchar();

return x*f;

}struct tmp{

int next,t;

bool operator<(const tmp&o)const{return nextq;

bool v[nm];

bool cmp(int x,int y){

return b[x]

校隊排位賽 F 優先佇列

題目 看病要排隊這個是地球人都知道的常識。不過經過細心的0068的觀察,他發現了醫院裡排隊還是有講究的。0068所去的醫院有三個醫生 汗,這麼少 同時看病。而看病的人病情有輕重,所以不能根據簡單的先來先服務的原則。所以醫院對每種病情規定了10種不同的優先順序。級別為10的優先權最高,級別為1的優先權...

優先佇列貪心

最近做了幾個用優先佇列進行貪心的題目,這裡寫下來,以免忘了。1 cf 799 b 每次選最便宜的衣服,沒什麼好說的,一發過 include include include include include define n 6005 define inf 0x3f3f3f3f include incl...

貪心加優先佇列

消滅兔子 李陶冶 命題人 基準時間限制 1 秒 空間限制 131072 kb 分值 40 有n只兔子,每只有乙個血量b i 需要用箭殺死免子。有m種不同型別的箭可以選擇,每種箭對兔子的傷害值分別為d i 為p i 1 i m 假設每種箭只能使用一次,每只免子也只能被射一次,計算要消滅地圖上的所有兔子...