loj 6282 數列分塊入門 6

2022-08-01 17:15:13 字數 907 閱讀 9653

題目:傳送門

簡要題意:

給出乙個長為 n的數列,以及 n個操作,操作涉及單點插入,單點詢問,資料隨機生成。

題解:不得不說hzwer有點懶

好好打分塊:

分塊的題實在是越來越噁心,越來越暴力了....

第一反應就是硬插...然後重新分塊...感覺要爆...%一發hzwer

結果...每次其實最多就影響兩個塊...爆?不存在的...

然後就是一通亂搞...加夠了那麼多個數再重新分塊...

**:

1 #include2 #include3 #include4 #include5 #include6

using

namespace

std;

7int n,p,t,a[1100][2100],b[1100][2100];8

int block,len[2100];9

void

reset()

1023 k=p/block;if(p%block!=0)k++;

24for(int i=1;i<=k;i++)

2530}31

intmain()

3240 t=0;41

for(int i=1;i<=n;i++)

4252 len[t]++;

53for(int j=len[t];j>=l-k+1;j--)a[t][j]=a[t][j-1];a[t][l-k]=r;

54 t++;if(t==block)reset();55}

56else

5764 printf("

%d\n

",a[t][r-k]);65}

66}67return0;

68 }

LOJ 6282 數列分塊6

題目大意 給定乙個由 n 個數組成的序列,維護兩種操作 單點詢問,單點插入。n 100000 題解 在塊內維護乙個鍊錶,支援動態插入數字,同時對於非隨即資料來說,若塊的大小過大,需要重構。注 對於 c vector 的 insert 函式的含義是在給定迭代器的後面插入數值。如下 include us...

LOJ6282 數列分塊入門 6 分塊

給定乙個長為 n 的序列,有 n 次操作,每次可能在指定位置插入乙個數,或者詢問指定位置的數是多少,資料隨機 考慮到資料隨機,我們維護 sqrt n 個vector,每次操作的時候暴力掃一遍找到對應下標的位置即可 事實證明這樣 t 了,我們該用list,於是就過了 include using nam...

6282 數列分塊入門 6

題目鏈結 插入值過後整個分塊已經不是平均分配了,可能導致某一塊過大,需要重新build,將塊元素平均。第一行輸入乙個數字 n。第二行輸入 n 個數字,第 i 個數字為 ai 以空格隔開。接下來輸入 n 行詢問,每行輸入四個數字 opt l r c,以空格隔開。若 opt 0,表示在第 l 個數字前插...