SlideShare ist ein Scribd-Unternehmen logo
1 von 9
Downloaden Sie, um offline zu lesen
RUPC 2019 Day 3
G 問題
- Donuts Orientation -
原案:tsukasa_diary
問題文:tsuta_j
解説:tsukasa_diary
2019/3/7 RUPC 2019 DAY 3 G 1
問題
2𝑁頂点のドーナツ型無向グラフが与えられる。各辺に
向き付けするとき、閉路ができない向き付けは何通り
あるか。(𝑁 ≤ 1000, 答えは素数𝑀で剰余を取る)
2019/3/7 RUPC 2019 DAY 3 G 2
1
2
342N-1 2N
2i
2i-1
1
2
3465
基本的なアルゴリズム
メモ化再帰
◦ 各辺を順に向き付けていく
◦ 頂点の推移閉包をメモ
2019/3/7 RUPC 2019 DAY 3 G 3
1
2
3465
𝒔/𝒕 1 2 3 4 5 6
1 0 1 1 1 0 0
2 0 0 1 1 0 0
3 0 0 0 0 0 0
4 0 0 1 0 0 0
5 0 0 0 0 0 0
6 0 0 0 0 0 0
0: 𝑠から𝑡へ推移不可能 1: 𝑠から𝑡へ推移可能
rec(𝑖, 𝑐𝑢𝑟): // 辺 𝑢𝑖, 𝑣𝑖 に向き付けする
if (閉路を検出) return 0
if (𝑖 = 𝑙𝑎𝑠𝑡) return 1
if ( 𝑖, 𝑐𝑢𝑟 がメモ済み) return 𝑚𝑒𝑚𝑜[𝑖, 𝑐𝑢𝑟]
𝑛𝑥𝑡1 ← 𝑎𝑑𝑑𝐴𝑟𝑐 𝑐𝑢𝑟, 𝑢𝑖 → 𝑣𝑖
𝑛𝑥𝑡2 ← 𝑎𝑑𝑑𝐴𝑟𝑐 𝑐𝑢𝑟, 𝑣𝑖 → 𝑢𝑖
𝑚𝑒𝑚𝑜 𝑖, 𝑐𝑢𝑟 ←(rec(𝑖+1, 𝑛𝑥𝑡1) + rec(𝑖+1, 𝑛𝑥𝑡2))%𝑀
return 𝑚𝑒𝑚𝑜 𝑖, 𝑐𝑢𝑟
𝒔/𝒕 1 2 3 4 5 6
1 0 1 1 1 0 0
2 0 0 1 1 0 0
3 0 0 0 0 0 0
4 0 0 1 0 0 0
5 0 0 0 0 0 0
6 0 0 0 0 0 0
0: 𝑠から𝑡へ推移不可能 1: 𝑠から𝑡へ推移可能
明らかな問題点
頂点数が2𝑁だから推移閉包のサイズが4𝑁2
◦ 推移閉包の種類数は𝑂 2 𝑁2
◦ 総計算量は𝑂 𝑁32 𝑁2
2019/3/7 RUPC 2019 DAY 3 G 4
これをメモするのは
非現実的
考察の前準備
とりあえずグラフを見やすい形に描きなおす
2019/3/7 RUPC 2019 DAY 3 G 5
1 2
3 4
5 6
1
2
3465
梯子(幅2のグリッド)の上下がくっついただけ
重要な考察
上の辺から順に向き付けるとき、向き付けが完了した
領域の四隅頂点以外の推移関係は無視してよい
2019/3/7 RUPC 2019 DAY 3 G 6
𝒔/𝒕 1 2 3 4 5 6
1 0 1 1 0 1 0
2 0 0 0 0 0 0
3 0 0 0 1 1 0
4 0 1 1 0 1 0
5 0 0 0 0 0 0
6 0 1 1 1 1 0
0: 𝑠から𝑡へ推移不可能 1: 𝑠から𝑡へ推移可能
無視
ここは最後に
向き付け
ここは最後に
向き付け
1 2
3 4
5 6
重要な考察
上の辺から順に向き付けるとき、向き付けが完了した
領域の四隅頂点以外の推移関係は無視してよい
2019/3/7 RUPC 2019 DAY 3 G 7
1 2
3 4
5 6
なぜ?
• 四隅頂点の集合を 𝐹とする
• サイクル検出について
• ある頂点 𝑣 ∉ 𝐹 について、辺 𝑥, 𝑦 を向き付けして 𝑣
を含むサイクルができるとき、必ず 𝑥, 𝑦 ∈ 𝐹 であって
𝑦 → 𝑣 → 𝑥 という推移関係がある
• しかし、 𝑦 → 𝑣 → 𝑥 から 𝑦 → 𝑥 という推移関係が導
かれるので、 𝑣 を無視しても正しくサイクル検出可能
• 推移関係の更新についても同様に議論可能
6 → 3 → 5
想定解法まとめ
四隅頂点に関する推移閉包を管理するメモ化再帰
◦ 計算量は 𝑂 𝑁 × 42
× 推移閉包の種類数
◦ 4頂点の推移閉包の種類数は 3994(参考:OEIS A006905)
推移閉包の管理が強実装
◦ 四隅が動くので行と列が目まぐるしく変わる
◦ よく考えると以下の 3 操作でうまく実現できる
◦ ワーシャル・フロイド的に更新する (辺追加は3乗でなく2乗でできます)
◦ ある行を全部 0 にする
◦ ある列を全部 0 にする
2019/3/7 RUPC 2019 DAY 3 G 8
詳細は割愛
Writer Solutions / Statistics
Writer Solutions
tsukasa diary: 85 lines, 2654 bytes in C++
tsuta j: 133 lines, 3718 bytes in C++
Acceptance / Submission
80 % (4/5)
First Acceptance
On-site: rupc ohauku (162 min)
On-line: rickytheta (133 min)

Weitere ähnliche Inhalte

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

Mehr von 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 F: グリッドの番号
HUPC 2019 Day1 F: グリッドの番号HUPC 2019 Day1 F: グリッドの番号
HUPC 2019 Day1 F: グリッドの番号
 
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 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)
 

Kürzlich hochgeladen

AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~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...博三 太田
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 

Kürzlich hochgeladen (8)

AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~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...
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 

RUPC 2019 Day3 G: Donuts Orientation