SlideShare a Scribd company logo
1 of 13
Download to read offline
F - グリッドの番号
原案: monkukui
問題文: monkukui
解説: monkukui
問題概要
< <
<<
• から までの整数をグリッドに書き込む.
• 以下の二つのルールを守る必要がある.
① 図のような不等式を満たす
② 隣り合う整数の差を 以下にする
• 整数の書き込み方は全部で何通りか?
[制約]
1 2 × n
k
1 ≤ n ≤ 100
1 ≤ k ≤ 10 <
<
問題概要
< <
<<
• から までの整数をグリッドに書き込む.
• 以下の二つのルールを守る必要がある.
① 図のような不等式を満たす
② 隣り合う整数の差を 以下にする
• 整数の書き込み方は全部で何通りか?
[制約]
1 2 × n
k
1 ≤ n ≤ 100
1 ≤ k ≤ 10 <
<
一旦、ルール①
のみを考えてみる
1
1 2 1
2
1 2 1 23
3
1
2
3
1 2 4
3
1 2
3 4
1 3
2
1 3
2 4
4
の例n = 3
1 2 3
4
: 次ステップで書き込める場所
• 整数を から順番に, 間ができないように,
下段が上段を超えないように書き込む.
1
考察(1/2) 
• 条件①だけの問題なら,
整数 まで書き込み済みで、
上段が 個埋まっている時の通り数
で でこの問題が解ける.
dp[i][j] := i
j
O(n2
)
< <
<<
<
<
< <
<<
<
<
21 3
4
1
2
3 4
① 図のような不等式を
満たす
② 隣り合う整数の差を
以下にするk
<
<
< <
<<
<
<
< <
<<
<
<
21 3
4
1
2
3 4
状態をまとめることができる
考察(1/2) 
• 条件①だけの問題なら,
整数 まで書き込み済みで、
上段が 個埋まっている時の通り数
で でこの問題が解ける.
dp[i][j] := i
j
O(n2
)
に対応
dp[4][3]
① 図のような不等式を
満たす
② 隣り合う整数の差を
以下にするk
<
<
• 条件②を考慮するには,
今後, 隣り合う可能性のあるマスを
覚えておく必要がある.
考察(2/2)  ① 図のような不等式を
満たす
② 隣り合う整数の差を
以下にするk
< <
<<
<
<
5 7
< <
<<
<
<
1
2
3 3
<
<
6 の例n = 6
<
<
• 条件②を考慮するには,
今後, 隣り合う可能性のあるマスを
覚えておく必要がある.
考察(2/2)  ① 図のような不等式を
満たす
② 隣り合う整数の差を
以下にするk
< <
<<
<
<
5 7
< <
<<
<
<
1
2
3 3
<
<
6 の例n = 6
赤色の波線部分の状態を覚えて
DP をすれば良い
<
<
<
想定解法
5 7
1
2
3 3
6
整数 まで書き込み済みで、
赤波線部分が な時の通り数.
dp[i][state] := i
state
5 7
1
2
3 3
6
5 7
1
2
3 3
6 8
8
右上に書き込む
左下に書き込む
計算量解析
• 次に置く整数を とする.
• 上段と下段に置かれている整数の個数の差を と置く.
• 赤線部分に置かれる整数は から までの 種類.
• さらに上段の赤線部分には昇順に置くことを踏まえると,
状態数は となる.
i
s
i − k i − 1 k
k − 1Cs × (s + 1)
1
2
3
個s
計算量解析
• よって を固定した時の状態数の総和は
<
で押さえられる.
• DP の遷移は定数回であるので,
アルゴリズム全体の時間計算量は となる.
i
k−1
∑
s=0
k − 1Cs × (s + 1) k
k−1
∑
s=0
k − 1Cs = k × 2k−1
O(nk2k
)
Writer 解
• monkukui (C++) 90 行
• Tsuta_J (C++) 106 行
• Tsuta_J (python) 90 行
• TAB (C++) 45 行
• kazu (C++) 107 行
提出状況
• On-site: honunokoibito (120:23)
• On-line: ICPC_MockaidoUniv (81:49)
• 18 / 85 (21.17 % )

More Related Content

More from HCPC: 北海道大学競技プログラミングサークル

More from HCPC: 北海道大学競技プログラミングサークル (20)

HUPC 2019 Day2 G: 木
HUPC 2019 Day2 G: 木HUPC 2019 Day2 G: 木
HUPC 2019 Day2 G: 木
 
HUPC 2019 Day2 E: ジャム
HUPC 2019 Day2 E: ジャムHUPC 2019 Day2 E: ジャム
HUPC 2019 Day2 E: ジャム
 
HUPC 2019 Day2 H: Revenge of UMG
HUPC 2019 Day2 H: Revenge of UMGHUPC 2019 Day2 H: Revenge of UMG
HUPC 2019 Day2 H: Revenge of UMG
 
HUPC 2019 Day2 F: MOD Rush
HUPC 2019 Day2 F: MOD RushHUPC 2019 Day2 F: MOD Rush
HUPC 2019 Day2 F: MOD Rush
 
HUPC 2019 Day2 C: 串刺し
HUPC 2019 Day2 C: 串刺しHUPC 2019 Day2 C: 串刺し
HUPC 2019 Day2 C: 串刺し
 
HUPC 2019 Day1 E: 最短経路の復元
HUPC 2019 Day1 E: 最短経路の復元HUPC 2019 Day1 E: 最短経路の復元
HUPC 2019 Day1 E: 最短経路の復元
 
HUPC 2019 Day1 D: 貪欲が最適?
HUPC 2019 Day1 D: 貪欲が最適?HUPC 2019 Day1 D: 貪欲が最適?
HUPC 2019 Day1 D: 貪欲が最適?
 
HUPC 2019 Day1 C: 短絡評価
HUPC 2019 Day1 C: 短絡評価HUPC 2019 Day1 C: 短絡評価
HUPC 2019 Day1 C: 短絡評価
 
HUPC 2019 Day1 B: 自身の 2 倍
HUPC 2019 Day1 B: 自身の 2 倍HUPC 2019 Day1 B: 自身の 2 倍
HUPC 2019 Day1 B: 自身の 2 倍
 
HUPC 2019 Day1 A: four tea
HUPC 2019 Day1 A: four teaHUPC 2019 Day1 A: four tea
HUPC 2019 Day1 A: four tea
 
Convex Hull Trick
Convex Hull TrickConvex Hull Trick
Convex Hull Trick
 
プログラミングコンテスト基礎テクニック
プログラミングコンテスト基礎テクニックプログラミングコンテスト基礎テクニック
プログラミングコンテスト基礎テクニック
 
RUPC 2019 Day3 G: Donuts Orientation
RUPC 2019 Day3 G: Donuts OrientationRUPC 2019 Day3 G: Donuts Orientation
RUPC 2019 Day3 G: Donuts Orientation
 
RUPC 2019 Day3 D: 矢
RUPC 2019 Day3 D: 矢RUPC 2019 Day3 D: 矢
RUPC 2019 Day3 D: 矢
 
RUPC 2019 Day3 F: 赤黒そーるじぇむ
RUPC 2019 Day3 F: 赤黒そーるじぇむRUPC 2019 Day3 F: 赤黒そーるじぇむ
RUPC 2019 Day3 F: 赤黒そーるじぇむ
 
RUPC 2019 Day3 E: 往復文字列
RUPC 2019 Day3 E: 往復文字列RUPC 2019 Day3 E: 往復文字列
RUPC 2019 Day3 E: 往復文字列
 
RUPC 2019 Day3 C: 約数ゲーム
RUPC 2019 Day3 C: 約数ゲームRUPC 2019 Day3 C: 約数ゲーム
RUPC 2019 Day3 C: 約数ゲーム
 
RUPC 2019 Day3 B: 括弧を語る数
RUPC 2019 Day3 B: 括弧を語る数RUPC 2019 Day3 B: 括弧を語る数
RUPC 2019 Day3 B: 括弧を語る数
 
RUPC 2019 Day3 A: 情報検索
RUPC 2019 Day3 A: 情報検索RUPC 2019 Day3 A: 情報検索
RUPC 2019 Day3 A: 情報検索
 
最大流 (max flow)
最大流 (max flow)最大流 (max flow)
最大流 (max flow)
 

Recently uploaded

Recently uploaded (7)

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 

HUPC 2019 Day1 F: グリッドの番号