牛客第三場 J LRU management

2021-09-25 18:28:39 字數 1653 閱讀 8908

起初看到這道題的時候,草草就放過去了,開了另一道題,結果開題不順利,總是感覺差一點就可以做出來,以至於一直到最後都沒能看這道題qaq

題意:類似於作業系統上講的lru演算法,有兩個操作,0操作代表訪問其中的塊,如果命中,將該塊去除放到陣列的末尾,未命中則在陣列末尾加入當前塊,1操作是詢問陣列中是否存在乙個塊,存在輸出該塊的資料,否則輸出無效。

分析:考慮到只是對於陣列的最後乙個元素進行操作,所以可以使用鍊錶進行模擬相關操作,主要的坑點就是時間卡的很緊所以需要加入快讀,使用簡單的hash將字串對映成乙個值,從而可以得到相應的結果。

#include#define ll long long

#define null 0

using

namespace

std;

namespace

io #define g getchartemplate

inline

void read(i &x)

while(c >= '

0' && c <= '

9')

x *=f;

}template

inline

void

write(i x)

i tmp = x > 0 ? x : -x;

if(x < 0) putchar('-'

);

int cnt = 0

;

while(tmp > 0

)

while(cnt > 0) putchar(buf[--cnt]);

}#define in(x) read(x)

#define outn(x) write(x), putchar('\n')

#define out(x) write(x), putchar(' ')}

using

namespace

io;#define ll long long

const

int n = 100010

;const

int maxn=5e5+10

;unordered_map

int >mp;

intx,cnt,xx,op,t,q,cap;

char s[20

];ll temp;

struct

node

};node *head,*tail,*p[maxn];

void

init()

void

insert()

void del(node *x)

intmain()

while(t--)

in(xx);

if(op==0

)

else

}else

}else

if(op==1

)

else

else

if(xx==1

)

else

}else

if(xx==-1

)

else}}

}}}}

view code

牛客第三場 J LRU management

起初看到這道題的時候,草草就放過去了,開了另一道題,結果開題不順利,總是感覺差一點就可以做出來,以至於一直到最後都沒能看這道題qaq 題意 類似於作業系統上講的lru演算法,有兩個操作,0操作代表訪問其中的塊,如果命中,將該塊去除放到陣列的末尾,未命中則在陣列末尾加入當前塊,1操作是詢問陣列中是否存...

Magic Line(牛客多校第三場)

magic line 首先我先把所有的點按照先橫座標後縱座標 都是由小到大 然後由於題目給的範圍很大,我們可以想到,如果取一條最為豎的線,那麼一定能分開,然後考慮一下最中間的兩個點橫座標相同的情況即可。include include include include include include i...

2020牛客多校第三場

沒有魚,沒有魚餌 沒有魚,有魚餌 有魚,沒魚餌 有魚,有魚餌 每個只能做其中乙個操作,如果在某個點之前已經拿過魚餌,還沒用,就能拿個魚,如果在某個點有魚,就能拿個魚。現在問最多能拿多少條魚?思路 貪心,如果有魚那肯定拿魚,魚 1,然後就剩0和1操作了,如果遇到1操作,直接拿魚餌,遇到0操作,看有沒有...