SlideShare une entreprise Scribd logo
1  sur  50
Palindromic Tree
@__MATH
Palindromic Tree(Eertree)とは
•Mikhail Rubinchik さんが作ったデータ構造
• 昔 codeforces にも参加されていた
• 割と最近に発表された、2015年?
何ができるの?
•文字列に含まれる全てのユニークな回文を求める
• それぞれの出現回数も求められる
•i番目が最後尾となるような、異なる長さの回文を求める
•構築がオンラインで出来る
•空間: O(nσ) (nは文字列の長さ、 σは文字種)
• 入力がランダムな文字列の場合 expected O(√nσ) らしい
•計算: O(n)
何ができるの?
•文字列に含まれる全てのユニークな回文を求める
• それぞれの出現回数も求められる
S = “eertreere” の時
“e” : 5回, ”r” : 3回, ”t” : 1回
“ee” : 2回, “rtr” : 1回, “ere” : 1回
“ertre” : 1回, “eertree” : 1回
何ができるの?
•i番目が最後尾となるような、異なる長さの回文を求める
S = “eertreere” の時、i = 5が最後尾となるような回文は
“ertre”, ”e” の2個
◦ 0-indexed
見た目
• S = “eertreere” の時
見た目
(-1)
(0)
r t e
ee
ere
reer
ertre
eertree
rtr
• S = “eertreere” の時
見た目
(-1)
(0)
r t e
ee
ere
reer
ertre
eertree
rtr
• S = “eertreere” の時
•見づらい
• 辺を減らして表示
見た目
(-1)
(0)
r t e
ee
ere
reer
ertre
eertree
rtr
• S = “eertreere” の時
Sに含まれている回文が頂点
見た目
(-1)
(0)
r t e
ee
ere
reer
ertre
eertree
rtr
• S = “eertreere” の時
Sに含まれている回文が頂点
長さが-1の特殊な頂点
長さが0の特殊な頂点
見た目
(-1)
(0)
r t e
ee
ere
reer
ertre
eertree
rtr
• S = “eertreere” の時
見た目
(-1)
(0)
r t e
ee
ere
reer
ertre
eertree
rtr
• S = “eertreere” の時
一つ前の回文の両側に一文字足して
出来る回文に辺を張る
見た目
(-1)
(0)
r t e
ee
ere
reer
ertre
eertree
rtr
• S = “eertreere” の時
一つ前の回文の両側に一文字足して
出来る回文に辺を張る
長さが1の回文は長さが-1の回文から作る
見た目
(-1)
(0)
r t e
ee
ere
reer
ertre
eertree
rtr
• S = “eertreere” の時
Suffix Link
見た目
(-1)
(0)
r t e
ee
ere
reer
ertre
eertree
rtr
• S = “eertreere” の時
頂点の文字列に含まれる
最大の回文接尾辞へsuffix linkを張る
Suffix Link
接尾辞
• 文字列の接尾辞とは、(開始位置を異にし終端位置を元の文字
列と同じくする部分文字列)
• Wikipedia より
• https://ja.wikipedia.org/wiki/接尾辞配列
• S = “eertre” の時
eertre
ertre
rtre
tre
re
e
見た目
(-1)
(0)
r t e
ee
ere
reer
ertre
eertree
rtr
• S = “eertreere” の時
頂点の文字列に含まれる
最大の回文接尾辞へsuffix linkを張る
Suffix Link
長さが1の頂点からは、長さ0の頂点へ
見た目
(-1)
(0)
r t e
ee
ere
reer
ertre
eertree
rtr
• S = “eertreere” の時
頂点の文字列に含まれる
最大の回文接尾辞へsuffix linkを張る
Suffix Link
長さが1の頂点からは、長さ0の頂点へ
長さが0の頂点からは、長さ-1の頂点へ
見た目
(-1)
(0)
r t e
ee
ere
reer
ertre
eertree
rtr
• S = “eertreere” の時
完成
Suffix Link
Palindromic Treeのデータ構造
•木を3つ同時に作っていくデータ構造
• 長さが偶数の頂点と、それらを結ぶ辺で構成される木
• 長さが奇数の頂点と、それらを結ぶ辺で構成される木
• 全ての頂点をsuffix linkで結んだ木 (-1)
(0)
r t e
ee
ere rtr
Suffix Link tree
全ての頂点をsuffix linkで結んだ木
◦ これが便利
◦ 公式の呼び方はなさそう?
(-1)
(0)
r t e
ee erertr
作り方 (-1)
(0)
r e
ee
• S = “eer” まで完成
作り方 (-1)
(0)
r e
ee
• S = “eer” まで完成
“eer” の最長の回文接尾辞
作り方 (-1)
(0)
r e
ee
• S = “eer” まで完成
“eert” の頂点を作る
S += “t”
作り方 (-1)
(0)
r e
ee
• S = “eer” まで完成
“eert” のPalindromic treeを作る
• S += “t”
• “t” + “r” + “t” は”eert”の回
文接尾辞ではない
trt?
作り方 (-1)
(0)
r e
ee
• S = “eer” まで完成
“eert” のPalindromic treeを作る
• S += “t”
• “t” + “r” + “t” は”eert”の回文接
尾辞ではない
• Suffix linkを辿り “(0)”へ移
動
作り方 (-1)
(0)
r e
ee
• S = “eer” まで完成
“eert” のPalindromic treeを作る
• S += “t”
• “t” + “r” + “t” は”eert”の回文接
尾辞ではない
• Suffix linkを辿り “(0)”へ移動
• “t” + “” + “t” は”eert”の回
文接尾辞ではない
tt?
作り方 (-1)
(0)
r e
ee
• S = “eer” まで完成
“eert” のPalindromic treeを作る
• S += “t”
• “t” + “r” + “t” は”eert”の回文接
尾辞ではない
• Suffix linkを辿り “(0)”へ移動
• “t” + “” + “t” は”eert”の回文接
尾辞ではない
• Suffix linkを辿り “(-1)”へ移
動
作り方 (-1)
(0)
r e
ee
• S = “eer” まで完成
“eert” のPalindromic treeを作る
• S += “t”
• “t” + “r” + “t” は”eert”の回文接
尾辞ではない
• Suffix linkを辿り “(0)”へ移動
• “t” + “” + “t” は”eert”の回文接
尾辞ではない
• Suffix linkを辿り “(-1)”へ移動
• “t”は”eert”の回文接尾辞!!
t
作り方 (-1)
(0)
r t e
ee
• S = “eertr” まで完成
rtr
作り方 (-1)
(0)
r t e
ee
• S = “eertr” まで完成
rtr
“eertr” の最長の回文接尾辞
作り方 (-1)
(0)
r t e
ee
• S = “eertr” まで完成
“eertre” のPalindromic tree
を作る
• S += “e”
rtr
作り方 (-1)
(0)
r t e
ee
• S = “eertr” まで完成
“eertre” の頂点を作る
S += “e”
“e” + “rtr” + “e” は “eertre”
の回文接尾辞 rtr
ertre?
作り方 (-1)
(0)
r t e
ee
• S = “eertr” まで完成
“eertre” のPalindromic tree
を作る
• S += “e”
“e” + “rtr” + “e” は “eertre”
の回文接尾辞
rtr
ertre“eertre” の最長の回文接尾辞
作り方 (-1)
(0)
r t e
ee
• Suffix Linkの追加
• 元いた頂点 “rtr”から、suffix linkを
辿って “r”へ移動
rtr
ertre
作り方 (-1)
(0)
r t e
ee
• Suffix Linkの追加
• 元いた頂点 “rtr”から、suffix linkを
辿って “r”へ移動
• “ere” は “ertre”の回文接尾辞
ではない
rtr
ertre
ere
作り方 (-1)
(0)
r t e
ee
• Suffix Linkの追加
• 元いた頂点 “rtr”から、suffix linkを
辿って “r”へ移動
• “ere” は “ertre”の回文接尾辞ではな
い
• “r”から、suffix linkを辿っ
て”(0)”へ 移動
rtr
ertre
作り方 (-1)
(0)
r t e
ee
• Suffix Linkの追加
• 元いた頂点 “rtr”から、suffix linkを
辿って “r”へ移動
• “ere” は “ertre”の回文接尾辞ではな
い
• “r”から、suffix linkを辿って”(0)”へ
移動
• “ee”は”ertre”の回文接尾辞で
はない
rtr
ertre
作り方 (-1)
(0)
r t e
ee
• Suffix Linkの追加
• 元いた頂点 “rtr”から、suffix linkを
辿って “r”へ移動
• “ere” は “ertre”の回文接尾辞ではな
い
• “r”から、suffix linkを辿って”(0)”へ
移動
• “ee”は”ertre”の回文接尾辞ではない
• “(0)”から、suffix linkを辿っ
て”(-1)”へ移動
rtr
ertre
作り方 (-1)
(0)
r t e
ee
• Suffix Linkの追加
• 元いた頂点 “rtr”から、suffix linkを
辿って “r”へ移動
• “ere” は “ertre”の回文接尾辞ではな
い
• “r”から、suffix linkを辿って”(0)”へ
移動
• “ee”は”ertre”の回文接尾辞ではない
• “(0)”から、suffix linkを辿って”(-1)”へ
移動
• “e”は”ertre”の回文接尾辞!!
rtr
ertre
何ができるの?(再掲)
•文字列に含まれる全てのユニークな回文を求める
• それぞれの出現回数も求められる
•i番目が最後尾となるような、異なる長さの回文を求める
何ができるの?
•文字列に含まれる全てのユニークな回文を求める
• 頂点数 - 2 すればよい
(0),(-1)の頂点を除く必要あり (-1)(0)
r t
e
ee
ere
reer
ertre
eertree
rtr
何ができるの?
•文字列に含まれる全てのユニークな回文を求める
• 頂点数 - 2 すればよい
•i番目が最後尾となるような、異なる長さの回文を
求める
何ができるの?
•文字列に含まれる全てのユニークな回文を求める
• 頂点数 - 2 すればよい
•i番目が最後尾となるような、異なる長さの回文を求める
• Suffix link treeの深さと一致する
• S = “eertreere” の時、i = 5が最後尾となるような回文は
“ertre”, ”e” の2個
(-1)(0)eertre
計算量
(-1)
(0)
r t e
ee
• 新しい頂点を追加するのにかかる計算量は?
rtr
計算量
(-1)
(0)
r t e
ee
• 新しい頂点を追加するのにかかる計算量は?
• 追加する文字とすでに追加された文字の比較を、
Suffix linkを辿った回数だけ行う
• 1文字と1文字の比較はO(1)
• そのノードが存在するかの確認
• mapならO(log σ)
rtr ertre
計算量
(-1)
(0)
r t e
ee
• 新しい頂点を追加するのにかかる計算量は?
• 追加する文字とすでに追加された文字の比較を、
Suffix linkを辿った回数だけ行う
• 1文字と1文字の比較はO(1)
• そのノードが存在するかの確認
• mapならO(log σ)
• 新しい頂点にSuffix linkを追加するために、さらにsuffix
linkを辿る
rtr ertre
計算量
(-1)
(0)
r t e
ee
• 新しい頂点を追加するのにかかる計算量は?
• 追加する文字とすでに追加された文字の比較を、
Suffix linkを辿った回数だけ行う
• 1文字と1文字の比較はO(1)
• そのノードが存在するかの確認
• mapならO(log σ)
• 新しい頂点にSuffix linkを追加するために、さらにsuffix
linkを辿る
• 新しい頂点の深さは最大で、
(前の頂点の深さ) - (辿った回数) + 3
rtr ertre
計算量
(-1)
(0)
r t e
ee
• 新しい頂点を追加するのにかかる計算量は?
• 追加する文字とすでに追加された文字の比較を、
Suffix linkを辿った回数だけ行う
• 1文字と1文字の比較はO(1)
• そのノードが存在するかの確認
• mapならO(log σ)
• 新しい頂点にSuffix linkを追加するために、さらにsuffix
linkを辿る
• 新しい頂点の深さは最大で、
(前の頂点の深さ) - (辿った回数) + 3
rtr ertre
N回の操作後、深さは最大でも3N回しか増えない
=> 合計の計算量は O(N) * O(log σ)
Appendix
https://arxiv.org/abs/1506.04862
• EERTREE: An Efficient Data Structure for Processing Palindromes in Strings
• http://adilet.org/blog/25-09-14/
• Palindromic tree を解説したブログ

Contenu connexe

Tendances

第21回アルゴリズム勉強会
第21回アルゴリズム勉強会第21回アルゴリズム勉強会
第21回アルゴリズム勉強会Yuuki Ono
 
プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~Takuya Akiba
 
指数時間アルゴリズムの最先端
指数時間アルゴリズムの最先端指数時間アルゴリズムの最先端
指数時間アルゴリズムの最先端Yoichi Iwata
 
AtCoder Regular Contest 023 解説
AtCoder Regular Contest 023 解説AtCoder Regular Contest 023 解説
AtCoder Regular Contest 023 解説AtCoder Inc.
 
Re永続データ構造が分からない人のためのスライド
Re永続データ構造が分からない人のためのスライドRe永続データ構造が分からない人のためのスライド
Re永続データ構造が分からない人のためのスライドMasaki Hara
 
LCA and RMQ ~簡潔もあるよ!~
LCA and RMQ ~簡潔もあるよ!~LCA and RMQ ~簡潔もあるよ!~
LCA and RMQ ~簡潔もあるよ!~Yuma Inoue
 
文字列検索のいろいろ
文字列検索のいろいろ文字列検索のいろいろ
文字列検索のいろいろKazuma Mikami
 
AtCoder Regular Contest 039 解説
AtCoder Regular Contest 039 解説AtCoder Regular Contest 039 解説
AtCoder Regular Contest 039 解説AtCoder Inc.
 
プログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズムプログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズムTakuya Akiba
 
Quine・難解プログラミングについて
Quine・難解プログラミングについてQuine・難解プログラミングについて
Quine・難解プログラミングについてmametter
 

Tendances (20)

Binary indexed tree
Binary indexed treeBinary indexed tree
Binary indexed tree
 
第21回アルゴリズム勉強会
第21回アルゴリズム勉強会第21回アルゴリズム勉強会
第21回アルゴリズム勉強会
 
プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~
 
指数時間アルゴリズムの最先端
指数時間アルゴリズムの最先端指数時間アルゴリズムの最先端
指数時間アルゴリズムの最先端
 
AtCoder Regular Contest 023 解説
AtCoder Regular Contest 023 解説AtCoder Regular Contest 023 解説
AtCoder Regular Contest 023 解説
 
Convex Hull Trick
Convex Hull TrickConvex Hull Trick
Convex Hull Trick
 
RMQ クエリ処理
RMQ クエリ処理RMQ クエリ処理
RMQ クエリ処理
 
Re永続データ構造が分からない人のためのスライド
Re永続データ構造が分からない人のためのスライドRe永続データ構造が分からない人のためのスライド
Re永続データ構造が分からない人のためのスライド
 
LCA and RMQ ~簡潔もあるよ!~
LCA and RMQ ~簡潔もあるよ!~LCA and RMQ ~簡潔もあるよ!~
LCA and RMQ ~簡潔もあるよ!~
 
文字列検索のいろいろ
文字列検索のいろいろ文字列検索のいろいろ
文字列検索のいろいろ
 
AtCoder Regular Contest 039 解説
AtCoder Regular Contest 039 解説AtCoder Regular Contest 039 解説
AtCoder Regular Contest 039 解説
 
全域木いろいろ
全域木いろいろ全域木いろいろ
全域木いろいろ
 
最大流 (max flow)
最大流 (max flow)最大流 (max flow)
最大流 (max flow)
 
プログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズムプログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズム
 
双対性
双対性双対性
双対性
 
写像 12 相
写像 12 相写像 12 相
写像 12 相
 
Quine・難解プログラミングについて
Quine・難解プログラミングについてQuine・難解プログラミングについて
Quine・難解プログラミングについて
 
グラフネットワーク〜フロー&カット〜
グラフネットワーク〜フロー&カット〜グラフネットワーク〜フロー&カット〜
グラフネットワーク〜フロー&カット〜
 
動的計画法を極める!
動的計画法を極める!動的計画法を極める!
動的計画法を極める!
 
Chokudai search
Chokudai searchChokudai search
Chokudai search
 

En vedette

動的計画法入門(An introduction to Dynamic Programming)
動的計画法入門(An introduction to Dynamic Programming)動的計画法入門(An introduction to Dynamic Programming)
動的計画法入門(An introduction to Dynamic Programming)kakira9618
 
解説:デバッグ
解説:デバッグ解説:デバッグ
解説:デバッグ理玖 川崎
 
競技プログラミングでの線型方程式系
競技プログラミングでの線型方程式系競技プログラミングでの線型方程式系
競技プログラミングでの線型方程式系tmaehara
 
高速フーリエ変換
高速フーリエ変換高速フーリエ変換
高速フーリエ変換AtCoder Inc.
 
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~Takuya Akiba
 
大規模グラフ解析のための乱択スケッチ技法
大規模グラフ解析のための乱択スケッチ技法大規模グラフ解析のための乱択スケッチ技法
大規模グラフ解析のための乱択スケッチ技法Takuya Akiba
 
プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法Takuya Akiba
 
勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとはTakuya Akiba
 
Layer Normalization@NIPS+読み会・関西
Layer Normalization@NIPS+読み会・関西Layer Normalization@NIPS+読み会・関西
Layer Normalization@NIPS+読み会・関西Keigo Nishida
 
IPAB2017 深層学習を使った新薬の探索から創造へ
IPAB2017 深層学習を使った新薬の探索から創造へIPAB2017 深層学習を使った新薬の探索から創造へ
IPAB2017 深層学習を使った新薬の探索から創造へPreferred Networks
 

En vedette (10)

動的計画法入門(An introduction to Dynamic Programming)
動的計画法入門(An introduction to Dynamic Programming)動的計画法入門(An introduction to Dynamic Programming)
動的計画法入門(An introduction to Dynamic Programming)
 
解説:デバッグ
解説:デバッグ解説:デバッグ
解説:デバッグ
 
競技プログラミングでの線型方程式系
競技プログラミングでの線型方程式系競技プログラミングでの線型方程式系
競技プログラミングでの線型方程式系
 
高速フーリエ変換
高速フーリエ変換高速フーリエ変換
高速フーリエ変換
 
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
 
大規模グラフ解析のための乱択スケッチ技法
大規模グラフ解析のための乱択スケッチ技法大規模グラフ解析のための乱択スケッチ技法
大規模グラフ解析のための乱択スケッチ技法
 
プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法
 
勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは
 
Layer Normalization@NIPS+読み会・関西
Layer Normalization@NIPS+読み会・関西Layer Normalization@NIPS+読み会・関西
Layer Normalization@NIPS+読み会・関西
 
IPAB2017 深層学習を使った新薬の探索から創造へ
IPAB2017 深層学習を使った新薬の探索から創造へIPAB2017 深層学習を使った新薬の探索から創造へ
IPAB2017 深層学習を使った新薬の探索から創造へ
 

Dernier

モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 

Dernier (9)

モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 

Palindromic tree

Notes de l'éditeur

  1. http://codeforces.com/profile/MikhailRubinchik 無理やり日本語読みすれば、ミハエル ルビンチク? 当時のレートが2279 red相当. Redになってやめた? ICPCにもコーチとしてよく参加している
  2. Manacher algorithmとの違い 空間計算量が増える代わりに出来ることが大量に増えた 時間計算量は一緒
  3. Manacher algorithmとの違い 空間計算量が増える代わりに出来ることが大量に増えた 時間計算量は一緒
  4. Manacher algorithmとの違い 空間計算量が増える代わりに出来ることが大量に増えた 時間計算量は一緒
  5. 正確には、頂点の文字列に含まれる中で自身より真に小さい最大の接尾辞回文、なのだが、長いので省略
  6. 正確には、頂点の文字列に含まれる中で自身より真に小さい最大の接尾辞回文、なのだが、長いので省略
  7. 正確には、頂点の文字列に含まれる中で自身より真に小さい最大の接尾辞回文、なのだが、長いので省略
  8. 正確には、頂点の文字列に含まれる中で自身より真に小さい最大の接尾辞回文、なのだが、長いので省略
  9. Suffix linkの張り方は別の例で解説
  10. Manacher algorithmとの違い 空間計算量が増える代わりに出来ることが大量に増えた 時間計算量は一緒
  11. Manacher algorithmとの違い 空間計算量が増える代わりに出来ることが大量に増えた 時間計算量は一緒
  12. Manacher algorithmとの違い 空間計算量が増える代わりに出来ることが大量に増えた 時間計算量は一緒
  13. Manacher algorithmとの違い 空間計算量が増える代わりに出来ることが大量に増えた 時間計算量は一緒