51Nod1207 記憶體管理

2022-05-09 14:09:10 字數 1136 閱讀 4691

題目看這裡

這麼好玩的資料結構題肯定是要來做一做啦

考慮splay-

顯然用乙個節點去維護乙個連續的記憶體塊,每次申請記憶體就找一塊盡可能前的,釋放就找乙個有相交的並合併,沒有則新建節點

splay一打還是錯落百出,不過效率還是可以的,跑了第一和map一樣快

#include#include#include#define n 100010

#define son(x) (s[f[x]][1]==x)

using namespace std;

int f[n],s[n][

2],sz[n],v[n],l[n],t[n];

int n,m,cnt=

0,rt=0;

inline

int newnode(

int p,

int len)

inline

int ps(

int x)

inline

void rot(

int x)

inline

void splay(

int x,

int r=0)

inline

int select(

int k,

int x=rt)

}inline

int rank(

int x)

inline

int merge(

int x,

int y)

return x+y;

}inline

void insert(

int p,

int len)

for(

int x=rt,d;;)

else x=s[x][d];

}}inline

void link(

int x,

int y)

intmain

() }

else

x=z; z=rank(x); splay(x); l[x]+=max(

0,(o+y)-(v[x]+l[x]));

o+=y;

for(;;)

}ps(x);

}}}

51nod 貪心入門

有若干個活動,第i個開始時間和結束時間是 si,fi 活動之間不能交疊,要把活動都安排完,至少需要幾個教室?分析 能否按照之一問題的解法,每個教室安排盡可能多的活動,即按結束時間排序,再貪心選擇不衝突的活動,安排乙個教室之後,剩餘的活動再分配乙個教室,繼續貪心選擇 反例 a 1,2 b 1,4 c ...

51nod 迷宮問題

1459 迷宮遊戲 基準時間限制 1 秒 空間限制 131072 kb 分值 0 難度 基礎題 你來到乙個迷宮前。該迷宮由若干個房間組成,每個房間都有乙個得分,第一次進入這個房間,你就可以得到這個分數。還有若干雙向道路鏈結這些房間,你沿著這些道路從乙個房間走到另外乙個房間需要一些時間。遊戲規定了你的...

51nod 硬幣遊戲

有乙個簡單但是很有趣的遊戲。在這個遊戲中有乙個硬幣還有一張桌子,這張桌子上有很多平行線 如下圖所示 兩條相鄰平行線之間的距離是1,硬幣的半徑是r,然後我們來拋硬幣到桌子上,拋下之後硬幣有時候會和一些直線相交 相切的情況也算是相交 有時候不會。請你來計算一下拋一次硬幣之後,該硬幣和直線相交數目的期望。...