SlideShare a Scribd company logo
1 of 66
Download to read offline
2015/03/22
山下 洋史
@utatakiyoshi
2015 JOI春合宿 Day3
AAQQZ(AAQQZ) 解説
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説
概要
・文字列が与えられる!
・ある区間をソートする!
・回文を探す!
・うまい区間を見つけて最長の回文を作る!
・文字の種類数 = 長さ 3 000
2
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説
例
ZQQQAZAQSTAN!
!
!
3
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説
例
ZQQQAZAQSTAN!
ZQQQAZAQSTAN!
!
4
区間を選ぶ
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説
例
ZQQQAZAQSTAN!
ZQQQAZAQSTAN!
ZQQAAQQZSTAN!
5
区間を選ぶ
ソートする
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説
例
ZQQQAZAQSTAN!
ZQQQAZAQSTAN!
ZQQAAQQZSTAN!
ZQQAAQQZSTAN
6
区間を選ぶ
ソートする
回文発見
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説
小課題1
・O(N4
) (N 50)!
!! ・区間をO(N2
)通り試す!
!! ・ソートして,O(N2
)かけて最長回文を探す!
・O(N)の最長回文アルゴリズムなど使うとO(N3
)になるけど……!
!! ・N = 3 000は解けそうにない!
!! ・「Manacher のアルゴリズム」各自調べること!
!! ・(例えば http://snuke.hatenablog.com/entry/2014/12/02/235837)
7
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説
ここから本題
(満点解法)
8
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説
ソート列の!
左右の端の位置で分類
9
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説
ソート列が回文の!
外側に来るものは不要
10
←
←
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説
ソート列が回文の!
外側に来るものは不要
11
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説
「反転」したものと!
合わせて2回解く
12
87766643221111112334666778
23344467789999998876444332
10-2=810-8=2
ソート列の中心  が 回文の中心  より右の場合だけ考えれば良い
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説
ソート列の中心が!
回文の中心より左にあるもの
13
←
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説
ソート列の中心が!
回文の中心より左にあるもの
14
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説
ソート列が回文を覆うもの!
は後回し
15
←
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説
なので,!
いま考えるべきなのは
16
ソート列の左端 が 回文 内に入っているパターン
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説
ソート列の!
左右の端の位置で分類
17
(1)
(2)
(3)
(4)
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説
中心に関して対称に
18
(1)
(2)
(3)
(4)
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説
パターン(1)
19
(1)
114 664332 514415 233466 411
降順 回文 昇順
(1)
(2)
(3)
(4)
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説
パターン(2)
20
(2)
8776664332 514415 2334666778 899
降順 回文 昇順
(1)
(2)
(3)
(4)
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説
パターン(3)
21
(3)
114 664332 111111 233466 411
降順 一定 昇順
(1)
(2)
(3)
(4)
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説
パターン(4)
22
(4)
8776664332 111111 2334666778 899
降順 一定 昇順
(1)
(2)
(3)
(4)
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説
パターンのまとめ
23
(1) 114 664332 514415 233466 411
(2) 8776664332 514415 2334666778 889
(3) 114 664332 111111 233466 411
(4) 8776664332 111111 2334666778 889
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説
(1) 114 664332 514415 233466 411
(2) 8776664332 514415 2334666778 889
(3) 114 664332 111111 233466 411
(4) 8776664332 111111 2334666778 889
開始位置をO(N)通り試す
24
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説
(1) 114 664332 514415 233466 411
(2) 8776664332 514415 2334666778 889
(3) 114 664332 111111 233466 411
(4) 8776664332 111111 2334666778 889
(1)(2)はまず!
できるだけ長い回文をとる
25
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説
(3)(4)は?!
26
(3) 114 664332 111111 233466 411
(4) 8776664332 111111 2334666778 889
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説
(3)(4)は?!
中心はどんな数?
27
114 664332 231346111611411
(3) 114 664332 111111 233466 411
(4) 8776664332 111111 2334666778 889
どんな数?
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説
114 664332 231346111611411
(3) 114 664332 111111 233466 411
(4) 8776664332 111111 2334666778 889
(3)(4)は?!
中心はどんな数?
28
  から右に見ていって初めに見つかる,  の1つ左より小さい数 
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説
114 664332 231346111611411
(3) 114 664332 oooooo 233466 411
(4) 8776664332 oooooo 2334666778 889
(3)(4)は?!
中心をoとおく
29
  から右に見ていって初めに見つかる,  の1つ左より小さい数 
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説
現在の状況
30
(1) 114 664332 514415 233466 411
(2) 8776664332 514415 2334666778 889
(3) 114 664332 oooooo 233466 411
(4) 8776664332 oooooo 2334666778 889
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説
• Solve(Lr, o, Rl)!
• 中心をO(N)個試す ←(1)(2)!
• できるだけ長い回文を見つけ,Lr=左端, Rl=右端!
• o = -1 (なし)!
• Lr,RlをO(N)通り試す ←(3)(4)!
• o = Rl から右に見ていって初めに見つかる,S[Lr] より小さい数!
• Solve() を O(N)∼O(NlogN) ぐらいで
Solve()をつくろう
31
(1) 114 664332 514415 233466 411
(2) 8776664332 514415 2334666778 889
(3) 114 664332 oooooo 233466 411
(4) 8776664332 oooooo 2334666778 889
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説
Solve(): パターン(2)(4)!
(ソート列が回文をはみ出る)
32
(1) 114 664332 514415 233466 411
(2) 8776664332 514415 2334666778 889
(3) 114 664332 oooooo 233466 411
(4) 8776664332 oooooo 2334666778 889
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説
左側の文字を数える
33
666442 42641841…
o = 1
…51
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説
左側の文字を数える
34
666442 42641841…
o = 1
…51
降順の部分を数える
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説
左側の文字を数える
35
666442 42641841……51
降順の部分を数える
o = 1
1 2 3 4 5 6 7 8 9
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説
左側の文字を数える
36
666442 42641841……51
1 2 3 4 5 6 7 8 9
o = 1
どれだけ入れてもOK
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説
左側の文字を数える
37
666442 42641841……51
1 2 3 4 5 6 7 8 9
o = 1
マッチする可能性アリ
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説
左側の文字を数える
38
666442 42641841…
1 2 3 4 5 6 7 8 9
o = 1
…51
マッチしない
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説
左側の文字を数える
39
666442 42641841…
1 2 3 4 5 6 7 8 9
o = 1
…51
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説40
666442
666442
666442
666442
666442
666442
666442
666442
…
…
右側を伸ばしていく:!
4はマッチしない
4
24
246
2446
12446
124468
1244468
11244468
666442 42641841…
1 2 3 4 5 6 7 8 9
△
o = 1
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説41
666442
666442
666442
666442
666442
666442
666442
666442
…
…
右側を伸ばしていく:!
2がマッチして4もマッチする
4
24
246
2446
12446
124468
1244468
11244468
666442 42641841…
1 2 3 4 5 6 7 8 9
✓ ✓
o = 1
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説42
666442
666442
666442
666442
666442
666442
666442
666442
…
…
右側を伸ばしていく:!
6はマッチしない
4
24
246
2446
12446
124468
1244468
11244468
666442 42641841…
1 2 3 4 5 6 7 8 9
✓ ✓ △
o = 1
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説43
666442
666442
666442
666442
666442
666442
666442
666442
…
…
右側を伸ばしていく:!
4がマッチして6がマッチする
4
24
246
2446
12446
124468
1244468
11244468
666442 42641841…
1 2 3 4 5 6 7 8 9
✓
✓ ✓ ✓
o = 1
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説44
666442
666442
666442
666442
666442
666442
666442
666442
…
…
右側を伸ばしていく:!
1はoなので中心が伸びる
4
24
246
2446
12446
124468
1244468
11244468
666442 42641841…
1 2 3 4 5 6 7 8 9
✓
o ✓ ✓ ✓
o = 1
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説45
666442
666442
666442
666442
666442
666442
666442
666442
…
…
右側を伸ばしていく:!
8はゴミ
4
24
246
2446
12446
124468
1244468
11244468
666442 42641841…
1 2 3 4 5 6 7 8 9
✓
o ✓ ✓ ✓ x
o = 1
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説46
666442
666442
666442
666442
666442
666442
666442
666442
…
…
右側を伸ばしていく:!
4はゴミ,大きい6もゴミに
4
24
246
2446
12446
124468
1244468
11244468
666442 42641841…
1 2 3 4 5 6 7 8 9
x
✓
o ✓ ✓ ✓ x
o = 1
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説47
666442
666442
666442
666442
666442
666442
666442
666442
…
…
右側を伸ばしていく:!
ゴミが入ってもoは伸びうる
4
24
246
2446
12446
124468
1244468
11244468
666442 42641841…
1 2 3 4 5 6 7 8 9
x
o ✓
o ✓ ✓ ✓ x
o = 1
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説48
666442
666442
666442
666442
666442
666442
666442
666442
…
…
こういうのを!
カウントする
4
24
246
2446
12446
124468
1244468
11244468
666442 42641841…
1 2 3 4 5 6 7 8 9
x
o ✓
o ✓ ✓ ✓ x
o = 1
o の個数 = 2!
✓ の右端までの個数 = 4!
x の左端までの個数 = 3!
長さ = min(4, 3) + 2 + min(4, 3) = 8
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説
こういうのを!
カウントする
49
66644211244468
6 6 6 4 4 2 1 1 2 4 4 6 6 6
o o ✓ ✓ ✓ ✓
長さ = min(4, 3) + 2 + min(4, 3) = 8
o の個数 = 2 ✓ の右端までの個数 = 4
x の左端までの個数 = 3
x!
4
x!
8
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説
右側を伸ばしていく:!
左側の文字を数える
50
666442 42641841…
1 2 3 4 5 6 7 8 9
o = 1
o の個数 = 0!
✓ の右端までの個数 = 0!
x の左端までの個数 = 6!
長さ = min(0, 6) + 0 + min(0, 6) = 0
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説51
666442
666442
666442
666442
666442
666442
666442
666442
…
…
右側を伸ばしていく:!
4はマッチしない
4
24
246
2446
12446
124468
1244468
11244468
666442 42641841…
1 2 3 4 5 6 7 8 9
△
o = 1
o の個数 = 0!
✓ の右端までの個数 = 0!
x の左端までの個数 = 6!
長さ = min(0, 6) + 0 + min(0, 6) = 0
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説52
666442
666442
666442
666442
666442
666442
666442
666442
…
…
右側を伸ばしていく:!
2がマッチして4もマッチする
4
24
246
2446
12446
124468
1244468
11244468
666442 42641841…
1 2 3 4 5 6 7 8 9
✓ ✓
o = 1
o の個数 = 0!
✓ の右端までの個数 = 2!
x の左端までの個数 = 6!
長さ = min(2, 6) + 0 + min(2, 6) = 4
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説53
666442
666442
666442
666442
666442
666442
666442
666442
…
…
右側を伸ばしていく:!
6はマッチしない
4
24
246
2446
12446
124468
1244468
11244468
666442 42641841…
1 2 3 4 5 6 7 8 9
✓ ✓ △
o = 1
o の個数 = 0!
✓ の右端までの個数 = 2!
x の左端までの個数 = 6!
長さ = min(2, 6) + 0 + min(2, 6) = 4
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説54
666442
666442
666442
666442
666442
666442
666442
666442
…
…
右側を伸ばしていく:!
4がマッチして6がマッチする
4
24
246
2446
12446
124468
1244468
11244468
666442 42641841…
1 2 3 4 5 6 7 8 9
✓
✓ ✓ ✓
o = 1
o の個数 = 0!
✓ の右端までの個数 = 4!
x の左端までの個数 = 6!
長さ = min(4, 6) + 0 + min(4, 6) = 8
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説55
666442
666442
666442
666442
666442
666442
666442
666442
…
…
右側を伸ばしていく:!
1はoなので中心が伸びる
4
24
246
2446
12446
124468
1244468
11244468
666442 42641841…
1 2 3 4 5 6 7 8 9
✓
o ✓ ✓ ✓
o = 1
o の個数 = 1!
✓ の右端までの個数 = 4!
x の左端までの個数 = 6!
長さ = min(4, 6) + 1 + min(4, 6) = 9
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説56
666442
666442
666442
666442
666442
666442
666442
666442
…
…
右側を伸ばしていく:!
8はゴミ
4
24
246
2446
12446
124468
1244468
11244468
666442 42641841…
1 2 3 4 5 6 7 8 9
✓
o ✓ ✓ ✓ x
o = 1
o の個数 = 1!
✓ の右端までの個数 = 4!
x の左端までの個数 = 6!
長さ = min(4, 6) + 1 + min(4, 6) = 9
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説57
666442
666442
666442
666442
666442
666442
666442
666442
…
…
右側を伸ばしていく:!
4はゴミ,大きい6もゴミに
4
24
246
2446
12446
124468
1244468
11244468
666442 42641841…
1 2 3 4 5 6 7 8 9
x
✓
o ✓ ✓ ✓ x
o = 1
o の個数 = 1!
✓ の右端までの個数 = 4!
x の左端までの個数 = 3!
長さ = min(4, 3) + 1 + min(4, 3) = 7
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説58
666442
666442
666442
666442
666442
666442
666442
666442
…
…
右側を伸ばしていく:!
ゴミが入ってもoは伸びうる
4
24
246
2446
12446
124468
1244468
11244468
666442 42641841…
1 2 3 4 5 6 7 8 9
x
o ✓
o ✓ ✓ ✓ x
o = 1
o の個数 = 2!
✓ の右端までの個数 = 4!
x の左端までの個数 = 3!
長さ = min(4, 3) + 2 + min(4, 3) = 8
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説59
Solve(): パターン(1)(3)!
(ソート列が回文をはみ出ない)
(1) 114 664332 514415 233466 411
(2) 8776664332 514415 2334666778 889
(3) 114 664332 oooooo 233466 411
(4) 8776664332 oooooo 2334666778 889
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説
666442
!
!
!
!
!
!
1244666
!
!
!
!
!
!
60
666442 4264166114
1 2 3 4 5 6 7 8 9
✓
✓ ✓
o ✓ ✓ ✓
o = 1
o の個数 = 1!
✓ の右端までの個数 = 6!
x の左端までの個数 = 6!
長さ = min(6, 6) + 1 + min(6, 6) = 13
411
114 666442 1 244666 411
はみ出るパターンと!
ほぼ同じだが,
x がないとき,伸ばせる
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説
どれくらい伸ばせるかは,!
DP[ の位置][ の位置]!
としてO(N2)で前計算できる
666442
!
!
!
!
!
!
1244666
!
!
!
!
!
!
61
666442 4264166114
1 2 3 4 5 6 7 8 9
✓
✓ ✓
o ✓ ✓ ✓
o = 1
o の個数 = 1!
✓ の右端までの個数 = 6!
x の左端までの個数 = 6!
長さ = min(6, 6) + 1 + min(6, 6) = 13
411
114 666442 1 244666 411
x がないとき,伸ばせる
はみ出るパターンと!
ほぼ同じだが,
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説
これで本当に!
絶対ACするよ!
もしACしなかったら!
木の下に埋めて貰っても!
構わないよ
62
やったぜ
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説
ババーン
全部ソートに注意
63
  2124123222!
→× 2121243222!
→○ 1122222234
←←←
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説
解法の概略・まとめ
・文字列を「反転」させて2回解く!
・DP[a][b] = (aまで,と,bから,で一致する文字列の最長)!
! ! をO(N
2
)で前計算!
・回文の途中までをソートするパターン4つ!
! ・初期位置をO(N)通り!
! ・左側はできるだけ長い降順な列をとり,!
! ! ・右側を順に伸ばしていく! !
! ! ・どちらもO(N),合計でO(N
2
)!
・全部ソートするパターンを忘れない
64
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説
得点分布
65
Q Z Q Z Q Z Q Z Q Z Q Z Q Z Q Z Q Z Q
Q
Z
A = 100
= 10
= 0
2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説
得点分布
65
Q ZQ ZQ ZQ ZQ ZQ ZQ ZQ ZQ ZQ
Q
Z
A = 100
= 10
= 0

More Related Content

Recently uploaded

Recently uploaded (10)

LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 

Featured

How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
ThinkNow
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
Kurio // The Social Media Age(ncy)
 

Featured (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

2015 JOI春合宿 Day3 AAQQZ 解説

  • 2. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説 概要 ・文字列が与えられる! ・ある区間をソートする! ・回文を探す! ・うまい区間を見つけて最長の回文を作る! ・文字の種類数 = 長さ 3 000 2
  • 3. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説 例 ZQQQAZAQSTAN! ! ! 3
  • 4. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説 例 ZQQQAZAQSTAN! ZQQQAZAQSTAN! ! 4 区間を選ぶ
  • 5. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説 例 ZQQQAZAQSTAN! ZQQQAZAQSTAN! ZQQAAQQZSTAN! 5 区間を選ぶ ソートする
  • 6. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説 例 ZQQQAZAQSTAN! ZQQQAZAQSTAN! ZQQAAQQZSTAN! ZQQAAQQZSTAN 6 区間を選ぶ ソートする 回文発見
  • 7. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説 小課題1 ・O(N4 ) (N 50)! !! ・区間をO(N2 )通り試す! !! ・ソートして,O(N2 )かけて最長回文を探す! ・O(N)の最長回文アルゴリズムなど使うとO(N3 )になるけど……! !! ・N = 3 000は解けそうにない! !! ・「Manacher のアルゴリズム」各自調べること! !! ・(例えば http://snuke.hatenablog.com/entry/2014/12/02/235837) 7
  • 8. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説 ここから本題 (満点解法) 8
  • 9. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説 ソート列の! 左右の端の位置で分類 9
  • 10. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説 ソート列が回文の! 外側に来るものは不要 10 ← ←
  • 11. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説 ソート列が回文の! 外側に来るものは不要 11
  • 12. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説 「反転」したものと! 合わせて2回解く 12 87766643221111112334666778 23344467789999998876444332 10-2=810-8=2 ソート列の中心  が 回文の中心  より右の場合だけ考えれば良い
  • 13. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説 ソート列の中心が! 回文の中心より左にあるもの 13 ←
  • 14. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説 ソート列の中心が! 回文の中心より左にあるもの 14
  • 15. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説 ソート列が回文を覆うもの! は後回し 15 ←
  • 16. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説 なので,! いま考えるべきなのは 16 ソート列の左端 が 回文 内に入っているパターン
  • 17. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説 ソート列の! 左右の端の位置で分類 17 (1) (2) (3) (4)
  • 18. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説 中心に関して対称に 18 (1) (2) (3) (4)
  • 19. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説 パターン(1) 19 (1) 114 664332 514415 233466 411 降順 回文 昇順 (1) (2) (3) (4)
  • 20. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説 パターン(2) 20 (2) 8776664332 514415 2334666778 899 降順 回文 昇順 (1) (2) (3) (4)
  • 21. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説 パターン(3) 21 (3) 114 664332 111111 233466 411 降順 一定 昇順 (1) (2) (3) (4)
  • 22. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説 パターン(4) 22 (4) 8776664332 111111 2334666778 899 降順 一定 昇順 (1) (2) (3) (4)
  • 23. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説 パターンのまとめ 23 (1) 114 664332 514415 233466 411 (2) 8776664332 514415 2334666778 889 (3) 114 664332 111111 233466 411 (4) 8776664332 111111 2334666778 889
  • 24. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説 (1) 114 664332 514415 233466 411 (2) 8776664332 514415 2334666778 889 (3) 114 664332 111111 233466 411 (4) 8776664332 111111 2334666778 889 開始位置をO(N)通り試す 24
  • 25. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説 (1) 114 664332 514415 233466 411 (2) 8776664332 514415 2334666778 889 (3) 114 664332 111111 233466 411 (4) 8776664332 111111 2334666778 889 (1)(2)はまず! できるだけ長い回文をとる 25
  • 26. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説 (3)(4)は?! 26 (3) 114 664332 111111 233466 411 (4) 8776664332 111111 2334666778 889
  • 27. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説 (3)(4)は?! 中心はどんな数? 27 114 664332 231346111611411 (3) 114 664332 111111 233466 411 (4) 8776664332 111111 2334666778 889 どんな数?
  • 28. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説 114 664332 231346111611411 (3) 114 664332 111111 233466 411 (4) 8776664332 111111 2334666778 889 (3)(4)は?! 中心はどんな数? 28   から右に見ていって初めに見つかる,  の1つ左より小さい数 
  • 29. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説 114 664332 231346111611411 (3) 114 664332 oooooo 233466 411 (4) 8776664332 oooooo 2334666778 889 (3)(4)は?! 中心をoとおく 29   から右に見ていって初めに見つかる,  の1つ左より小さい数 
  • 30. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説 現在の状況 30 (1) 114 664332 514415 233466 411 (2) 8776664332 514415 2334666778 889 (3) 114 664332 oooooo 233466 411 (4) 8776664332 oooooo 2334666778 889
  • 31. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説 • Solve(Lr, o, Rl)! • 中心をO(N)個試す ←(1)(2)! • できるだけ長い回文を見つけ,Lr=左端, Rl=右端! • o = -1 (なし)! • Lr,RlをO(N)通り試す ←(3)(4)! • o = Rl から右に見ていって初めに見つかる,S[Lr] より小さい数! • Solve() を O(N)∼O(NlogN) ぐらいで Solve()をつくろう 31 (1) 114 664332 514415 233466 411 (2) 8776664332 514415 2334666778 889 (3) 114 664332 oooooo 233466 411 (4) 8776664332 oooooo 2334666778 889
  • 32. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説 Solve(): パターン(2)(4)! (ソート列が回文をはみ出る) 32 (1) 114 664332 514415 233466 411 (2) 8776664332 514415 2334666778 889 (3) 114 664332 oooooo 233466 411 (4) 8776664332 oooooo 2334666778 889
  • 33. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説 左側の文字を数える 33 666442 42641841… o = 1 …51
  • 34. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説 左側の文字を数える 34 666442 42641841… o = 1 …51 降順の部分を数える
  • 35. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説 左側の文字を数える 35 666442 42641841……51 降順の部分を数える o = 1 1 2 3 4 5 6 7 8 9
  • 36. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説 左側の文字を数える 36 666442 42641841……51 1 2 3 4 5 6 7 8 9 o = 1 どれだけ入れてもOK
  • 37. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説 左側の文字を数える 37 666442 42641841……51 1 2 3 4 5 6 7 8 9 o = 1 マッチする可能性アリ
  • 38. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説 左側の文字を数える 38 666442 42641841… 1 2 3 4 5 6 7 8 9 o = 1 …51 マッチしない
  • 39. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説 左側の文字を数える 39 666442 42641841… 1 2 3 4 5 6 7 8 9 o = 1 …51
  • 40. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説40 666442 666442 666442 666442 666442 666442 666442 666442 … … 右側を伸ばしていく:! 4はマッチしない 4 24 246 2446 12446 124468 1244468 11244468 666442 42641841… 1 2 3 4 5 6 7 8 9 △ o = 1
  • 41. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説41 666442 666442 666442 666442 666442 666442 666442 666442 … … 右側を伸ばしていく:! 2がマッチして4もマッチする 4 24 246 2446 12446 124468 1244468 11244468 666442 42641841… 1 2 3 4 5 6 7 8 9 ✓ ✓ o = 1
  • 42. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説42 666442 666442 666442 666442 666442 666442 666442 666442 … … 右側を伸ばしていく:! 6はマッチしない 4 24 246 2446 12446 124468 1244468 11244468 666442 42641841… 1 2 3 4 5 6 7 8 9 ✓ ✓ △ o = 1
  • 43. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説43 666442 666442 666442 666442 666442 666442 666442 666442 … … 右側を伸ばしていく:! 4がマッチして6がマッチする 4 24 246 2446 12446 124468 1244468 11244468 666442 42641841… 1 2 3 4 5 6 7 8 9 ✓ ✓ ✓ ✓ o = 1
  • 44. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説44 666442 666442 666442 666442 666442 666442 666442 666442 … … 右側を伸ばしていく:! 1はoなので中心が伸びる 4 24 246 2446 12446 124468 1244468 11244468 666442 42641841… 1 2 3 4 5 6 7 8 9 ✓ o ✓ ✓ ✓ o = 1
  • 45. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説45 666442 666442 666442 666442 666442 666442 666442 666442 … … 右側を伸ばしていく:! 8はゴミ 4 24 246 2446 12446 124468 1244468 11244468 666442 42641841… 1 2 3 4 5 6 7 8 9 ✓ o ✓ ✓ ✓ x o = 1
  • 46. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説46 666442 666442 666442 666442 666442 666442 666442 666442 … … 右側を伸ばしていく:! 4はゴミ,大きい6もゴミに 4 24 246 2446 12446 124468 1244468 11244468 666442 42641841… 1 2 3 4 5 6 7 8 9 x ✓ o ✓ ✓ ✓ x o = 1
  • 47. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説47 666442 666442 666442 666442 666442 666442 666442 666442 … … 右側を伸ばしていく:! ゴミが入ってもoは伸びうる 4 24 246 2446 12446 124468 1244468 11244468 666442 42641841… 1 2 3 4 5 6 7 8 9 x o ✓ o ✓ ✓ ✓ x o = 1
  • 48. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説48 666442 666442 666442 666442 666442 666442 666442 666442 … … こういうのを! カウントする 4 24 246 2446 12446 124468 1244468 11244468 666442 42641841… 1 2 3 4 5 6 7 8 9 x o ✓ o ✓ ✓ ✓ x o = 1 o の個数 = 2! ✓ の右端までの個数 = 4! x の左端までの個数 = 3! 長さ = min(4, 3) + 2 + min(4, 3) = 8
  • 49. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説 こういうのを! カウントする 49 66644211244468 6 6 6 4 4 2 1 1 2 4 4 6 6 6 o o ✓ ✓ ✓ ✓ 長さ = min(4, 3) + 2 + min(4, 3) = 8 o の個数 = 2 ✓ の右端までの個数 = 4 x の左端までの個数 = 3 x! 4 x! 8
  • 50. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説 右側を伸ばしていく:! 左側の文字を数える 50 666442 42641841… 1 2 3 4 5 6 7 8 9 o = 1 o の個数 = 0! ✓ の右端までの個数 = 0! x の左端までの個数 = 6! 長さ = min(0, 6) + 0 + min(0, 6) = 0
  • 51. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説51 666442 666442 666442 666442 666442 666442 666442 666442 … … 右側を伸ばしていく:! 4はマッチしない 4 24 246 2446 12446 124468 1244468 11244468 666442 42641841… 1 2 3 4 5 6 7 8 9 △ o = 1 o の個数 = 0! ✓ の右端までの個数 = 0! x の左端までの個数 = 6! 長さ = min(0, 6) + 0 + min(0, 6) = 0
  • 52. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説52 666442 666442 666442 666442 666442 666442 666442 666442 … … 右側を伸ばしていく:! 2がマッチして4もマッチする 4 24 246 2446 12446 124468 1244468 11244468 666442 42641841… 1 2 3 4 5 6 7 8 9 ✓ ✓ o = 1 o の個数 = 0! ✓ の右端までの個数 = 2! x の左端までの個数 = 6! 長さ = min(2, 6) + 0 + min(2, 6) = 4
  • 53. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説53 666442 666442 666442 666442 666442 666442 666442 666442 … … 右側を伸ばしていく:! 6はマッチしない 4 24 246 2446 12446 124468 1244468 11244468 666442 42641841… 1 2 3 4 5 6 7 8 9 ✓ ✓ △ o = 1 o の個数 = 0! ✓ の右端までの個数 = 2! x の左端までの個数 = 6! 長さ = min(2, 6) + 0 + min(2, 6) = 4
  • 54. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説54 666442 666442 666442 666442 666442 666442 666442 666442 … … 右側を伸ばしていく:! 4がマッチして6がマッチする 4 24 246 2446 12446 124468 1244468 11244468 666442 42641841… 1 2 3 4 5 6 7 8 9 ✓ ✓ ✓ ✓ o = 1 o の個数 = 0! ✓ の右端までの個数 = 4! x の左端までの個数 = 6! 長さ = min(4, 6) + 0 + min(4, 6) = 8
  • 55. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説55 666442 666442 666442 666442 666442 666442 666442 666442 … … 右側を伸ばしていく:! 1はoなので中心が伸びる 4 24 246 2446 12446 124468 1244468 11244468 666442 42641841… 1 2 3 4 5 6 7 8 9 ✓ o ✓ ✓ ✓ o = 1 o の個数 = 1! ✓ の右端までの個数 = 4! x の左端までの個数 = 6! 長さ = min(4, 6) + 1 + min(4, 6) = 9
  • 56. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説56 666442 666442 666442 666442 666442 666442 666442 666442 … … 右側を伸ばしていく:! 8はゴミ 4 24 246 2446 12446 124468 1244468 11244468 666442 42641841… 1 2 3 4 5 6 7 8 9 ✓ o ✓ ✓ ✓ x o = 1 o の個数 = 1! ✓ の右端までの個数 = 4! x の左端までの個数 = 6! 長さ = min(4, 6) + 1 + min(4, 6) = 9
  • 57. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説57 666442 666442 666442 666442 666442 666442 666442 666442 … … 右側を伸ばしていく:! 4はゴミ,大きい6もゴミに 4 24 246 2446 12446 124468 1244468 11244468 666442 42641841… 1 2 3 4 5 6 7 8 9 x ✓ o ✓ ✓ ✓ x o = 1 o の個数 = 1! ✓ の右端までの個数 = 4! x の左端までの個数 = 3! 長さ = min(4, 3) + 1 + min(4, 3) = 7
  • 58. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説58 666442 666442 666442 666442 666442 666442 666442 666442 … … 右側を伸ばしていく:! ゴミが入ってもoは伸びうる 4 24 246 2446 12446 124468 1244468 11244468 666442 42641841… 1 2 3 4 5 6 7 8 9 x o ✓ o ✓ ✓ ✓ x o = 1 o の個数 = 2! ✓ の右端までの個数 = 4! x の左端までの個数 = 3! 長さ = min(4, 3) + 2 + min(4, 3) = 8
  • 59. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説59 Solve(): パターン(1)(3)! (ソート列が回文をはみ出ない) (1) 114 664332 514415 233466 411 (2) 8776664332 514415 2334666778 889 (3) 114 664332 oooooo 233466 411 (4) 8776664332 oooooo 2334666778 889
  • 60. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説 666442 ! ! ! ! ! ! 1244666 ! ! ! ! ! ! 60 666442 4264166114 1 2 3 4 5 6 7 8 9 ✓ ✓ ✓ o ✓ ✓ ✓ o = 1 o の個数 = 1! ✓ の右端までの個数 = 6! x の左端までの個数 = 6! 長さ = min(6, 6) + 1 + min(6, 6) = 13 411 114 666442 1 244666 411 はみ出るパターンと! ほぼ同じだが, x がないとき,伸ばせる
  • 61. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説 どれくらい伸ばせるかは,! DP[ の位置][ の位置]! としてO(N2)で前計算できる 666442 ! ! ! ! ! ! 1244666 ! ! ! ! ! ! 61 666442 4264166114 1 2 3 4 5 6 7 8 9 ✓ ✓ ✓ o ✓ ✓ ✓ o = 1 o の個数 = 1! ✓ の右端までの個数 = 6! x の左端までの個数 = 6! 長さ = min(6, 6) + 1 + min(6, 6) = 13 411 114 666442 1 244666 411 x がないとき,伸ばせる はみ出るパターンと! ほぼ同じだが,
  • 62. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説 これで本当に! 絶対ACするよ! もしACしなかったら! 木の下に埋めて貰っても! 構わないよ 62 やったぜ
  • 63. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説 ババーン 全部ソートに注意 63   2124123222! →× 2121243222! →○ 1122222234 ←←←
  • 64. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説 解法の概略・まとめ ・文字列を「反転」させて2回解く! ・DP[a][b] = (aまで,と,bから,で一致する文字列の最長)! ! ! をO(N 2 )で前計算! ・回文の途中までをソートするパターン4つ! ! ・初期位置をO(N)通り! ! ・左側はできるだけ長い降順な列をとり,! ! ! ・右側を順に伸ばしていく! ! ! ! ・どちらもO(N),合計でO(N 2 )! ・全部ソートするパターンを忘れない 64
  • 65. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説 得点分布 65 Q Z Q Z Q Z Q Z Q Z Q Z Q Z Q Z Q Z Q Q Z A = 100 = 10 = 0
  • 66. 2015/03/222015 JOI春合宿 Day3 AAQQZ(AAQQZ) 解説 得点分布 65 Q ZQ ZQ ZQ ZQ ZQ ZQ ZQ ZQ ZQ Q Z A = 100 = 10 = 0