起初看到這道題的時候,草草就放過去了,開了另一道題,結果開題不順利,總是感覺差一點就可以做出來,以至於一直到最後都沒能看這道題qaq
題意:類似於作業系統上講的lru演算法,有兩個操作,0操作代表訪問其中的塊,如果命中,將該塊去除放到陣列的末尾,未命中則在陣列末尾加入當前塊,1操作是詢問陣列中是否存在乙個塊,存在輸出該塊的資料,否則輸出無效。
分析:考慮到只是對於陣列的最後乙個元素進行操作,所以可以使用鍊錶進行模擬相關操作,主要的坑點就是時間卡的很緊所以需要加入快讀,使用簡單的hash將字串對映成乙個值,從而可以得到相應的結果。
#include#define ll long longview code#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}}
}}}}
牛客第三場 J LRU management
起初看到這道題的時候,草草就放過去了,開了另一道題,結果開題不順利,總是感覺差一點就可以做出來,以至於一直到最後都沒能看這道題qaq 題意 類似於作業系統上講的lru演算法,有兩個操作,0操作代表訪問其中的塊,如果命中,將該塊去除放到陣列的末尾,未命中則在陣列末尾加入當前塊,1操作是詢問陣列中是否存...
Magic Line(牛客多校第三場)
magic line 首先我先把所有的點按照先橫座標後縱座標 都是由小到大 然後由於題目給的範圍很大,我們可以想到,如果取一條最為豎的線,那麼一定能分開,然後考慮一下最中間的兩個點橫座標相同的情況即可。include include include include include include i...
2020牛客多校第三場
沒有魚,沒有魚餌 沒有魚,有魚餌 有魚,沒魚餌 有魚,有魚餌 每個只能做其中乙個操作,如果在某個點之前已經拿過魚餌,還沒用,就能拿個魚,如果在某個點有魚,就能拿個魚。現在問最多能拿多少條魚?思路 貪心,如果有魚那肯定拿魚,魚 1,然後就剩0和1操作了,如果遇到1操作,直接拿魚餌,遇到0操作,看有沒有...