P3203 彈飛綿羊 分塊

2022-05-30 17:48:10 字數 816 閱讀 9647

觀察資料範圍,發現可以分塊。只需要處理每個點跳出所在塊後的位置和次數即可。目的是為了加速查詢並降低修改複雜度。

對於修改,重構整個塊內資訊即可。

時間複雜度正確的一批

具體實現也挺簡單。注意重構時從後往前貢獻即可。

#include#include#include#include#include#includeusing namespace std;

inline int read()

namespace star

inline void work()

for(int i=1;i<=n;i++)a[i]=read();

sudo(1,n);

int q=read();

while(q--)else

} }}signed main()

那我要是想知道最後彈飛前的點在哪呢?

我們只需要在重構的時候記錄一下從哪來的就好了。

雙倍經驗:cf13e

#include#include#include#include#include#includeusing namespace std;

inline int read()

namespace star

inline void work()

for(int i=1;i<=n;i++)a[i]=read();

for(int i=1;i<=belong[n];i++)sudo(l[i],r[i]);

while(q--)else

} }}signed main()

洛谷 P3203 彈飛綿羊 分塊

題目鏈結 據說這道題要用一道叫做lct的資料結構,然而我不會。一排有n個彈簧裝置,從第 i i 個可一往後跳k i role presentation style position relative k i k i 步。分塊首先都要先從暴力開始想起 我們記錄從任意乙個點出發,下一次能跳到 這樣的話我...

洛谷P3203 彈飛綿羊 分塊

有n nn個裝置,每個裝置會把羊往後彈a i a i a i 要求支援一下操作 這道題不說是分塊基本就沒思路了。但是一知道是分塊就很好解了。我們分成n sqrt n n 個塊,每乙個彈射裝置維護兩個值 w i w i w i 彈出這個塊之後回到哪乙個彈射裝置。s i s i s i 要多少次才能彈出...

洛谷P3203 彈飛綿羊 分塊

有nn 個裝置,每個裝置會把羊往後彈a i a i 要求支援一下操作 這道題不說是分塊基本就沒思路了。但是一知道是分塊就很好解了。我們分成nn 個塊,每乙個彈射裝置維護兩個值 w i w i 彈出這個塊之後回到哪乙個彈射裝置。s i s i 要多少次才能彈出這個塊。那麼對於每乙個操作 如果是1 1操...