poj2887 Big String(塊狀鍊錶)

2021-08-14 17:31:51 字數 932 閱讀 4724

題目鏈結

分析:

塊狀鍊錶,據說是一種基本不會考到的資料結構,但是好像是騙分的好方法

我們要怎麼快速判斷乙個元素在鍊錶中的哪個結點呢?

記sum表示結點大小的字首和

我們用lower_bound查詢sum中大於等於pos(查詢位置的)

的第乙個sum[p]

那麼結點p就是pos應該插入到的結點

這道題比較簡單

鍊錶的形式不是特別明顯

因為一開始我們規定了每乙個結點的size上限:sqrt(n)

所以在初始化的時候就劃入了不同結點

因為只有單點插入操作,所以就不牽扯到**操作

初始字串的大小:1e6

#include

#include

#include

#include

#include

using

namespace

std;

const

int n=1000010;

char s[n];

int n,m,num,pos,sum[2005];

struct node

void insert(int pos,char c) //暴力插入

char get(int pos) //陣列的提取

};node block[2010];

void sum() //鍊錶總長度

void init()

void add(int pos,char c)

char ask(int pos)

int main()

else

}return

0;}

Poj 2887 Big String 塊狀陣列

塊狀陣列裸題.把鍊錶和陣列的特性結合起來.各個塊互不影響 包括長度 定位的時候看在哪一塊就可以了.各種複雜度都是 n.include include include define maxn 1000010 define maxm 1001 using namespace std int n,m,k,...

Poj 2887 Big String 塊狀陣列

塊狀陣列裸題.把鍊錶和陣列的特性結合起來.各個塊互不影響 包括長度 定位的時候看在哪一塊就可以了.各種複雜度都是 n.include include include define maxn 1000010 define maxm 1001 using namespace std int n,m,k,...

POJ2887 塊狀陣列

1 題意 給出乙個長串,然後給出n個操作,操作有兩種,在某個位置插入乙個字元,或者查詢第x個位置上的字元是什麼 2分析 1 快速輸出第x個位置上的字元,像直接儲存類資料結構中的陣列就可以,但是難在插入乙個字元時,後面所有字元都要動,所以不能用普通的陣列 而如果用鍊錶雖然能解決插入不超時的問題,但是因...