觀察資料範圍,發現可以分塊。只需要處理每個點跳出所在塊後的位置和次數即可。目的是為了加速查詢並降低修改複雜度。
對於修改,重構整個塊內資訊即可。
時間複雜度正確的一批
具體實現也挺簡單。注意重構時從後往前貢獻即可。
#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操...