弊社はエンジニアを熱烈募集しています. 以下から気軽にカジュアル面談申し込んでください. 就職・転職を考えている知人にも積極的に宣伝してください.
Spir | Smart scheduling calendar
この勉強会の宣伝もお願いします. 参加者が増えるほど質や頻度が上がると思います. #Acompany競プロ勉強会 で実況や感想,質問を呟くなども.
初期状態は空配列 $S$ これに対し以下の操作が出来るデータ構造(全て定数時間)
push(x)
: 配列の末尾に $x$ を追加pop()
: 配列の末尾を返り値にしつつ、配列の末尾を削除pop
の際に正しく値を返すことさえ出来るのであれば配列を陽に持つ必要はないが、これについては特に工夫せず陽に配列を持つだけで実現可能。
永続は時間を巻き戻せるようなデータ構造。
初期状態は空配列 $S_0$ これに対し、 $i$ 回目のクエリでは $0≤j<i$ を用いて以下の操作が出来るデータ構造(全て定数時間)
push(j, x)
: 配列 $S_j$ の末尾に $x$ を追加した配列 $S_i$ を定義pop(j)
: (非空な)配列 $S_j$ の末尾を返り値にしつつ $S_j$ の末尾を削除した配列 $S_i$ を定義配列が $Q$ 個あり、各配列の長さが $\Theta(Q)$ なため、配列を全て陽に持つ場合、クエリの個数を $Q$ として $\Theta(Q^2)$ 程度の時間・空間が必要になる。