模擬国内予選2013 Problem F テトラ姫のパズル 原案:須藤 解答:大友、須藤 解説:須藤.

Slides:



Advertisements
Similar presentations
Problem A : Everlasting...? 原案 : 泉 模範解答 : 黄・野田 解説 : 野田.
Advertisements

G 問題 コードアート オンライン 原案:西出 ライタ:伊藤 テスタ:西出. 問題概要 0 大きさのさまざまな n 個の円に多角形 m 個を入れら れるか判定する問題 0 ただし、同じ円に複数の多角形を入れることはでき ない 0 もし、入れられる場合は、辞書順最小の入れ方を出 力 ① ② ③ ① ②.
ACM/ICPC と アルゴリズム 「実践的プログラミング」 稲葉 一浩. 自己紹介 ﻪ 理Ⅰ → 理学部情報科学科 → 情報理工学系研究科コンピュータ科学専攻 ﻩ 博士課程1年 ﻩXML を扱う専用言語の研究など ﻪ 個人的には ﻩ ﻯD.
原案 : 野田 解答 : 野田・山 口 問題文 : 野田 PROBLEM E: PSYCHIC ACCELERATOR ~ とある超能力の物体加速器~
Problem C: Grated Radish ~大根おろし~. 成績 Submit 数: 0 Accept 数: 0 問題セットの中で最難問題なので解けな くても仕方が無いかなと思いつつ, 1 チー ム位 submit して欲しかった.
J: Magical Switches JAG 模擬地区予選 2013 原案:保坂 解答:保坂・楠本 解説:保坂.
到着時刻と燃料消費量を同時に最適化する船速・航路計画
3次元nクイーン問題の 解に関する研究 論理工学研究室 伊藤精一
Writter: slip0110 Tester: kioa341
ICPC夏合宿09 Day3 Problem D : Luigi‘s Tavern -ルイージの酒場-
連続系アルゴリズム演習 第2回 OpenMPによる課題.
Day2 Problem I: Memory Match ~神経衰弱~
Problem H: Queen’s case
データ構造と アルゴリズム 第十二回 知能情報学部 知能情報学科 新田直也.
ラベル付き区間グラフを列挙するBDDとその応用
近似アルゴリズム 第10章 終了時刻最小化スケジューリング
A: Attack the Moles 原案:高橋 / 解説:保坂.
On the Enumeration of Colored Trees
I: Tokyo Olympics Center
Intelligent Circular Perfect Cleaner(ICPC)
問題作成・解説: 北村 解答作成協力: 小西・松本
群論とルービックキューブ 白柳研究室  水野貴裕.
Problem G : Entangled Tree
スペクトル法による数値計算の原理 -一次元線形・非線形移流問題の場合-
Problem H ねこ鍋改造計画(仮) 秋葉 拓哉.
An Algorithm for Enumerating Maximal Matchings of a Graph
Probabilistic Method.
原案:阿部 担当:福澤, 笠原 英訳:寺島 解説:福澤
Extremal Combinatrics Chapter 4
情報知能学科「アルゴリズムとデータ構造」
一般化マクマホン立方体パズルの 問題例生成
JAG Regional Practice Contest 2012 問題C: Median Tree
原案: 矢藤(kohyatoh) 解答: 高原(rankalee, shimejitan), 矢藤 解説: 矢藤
 Combinations(2)        古川 勇輔.
Problem C: Princess' Japanese
模擬国内予選2014 Problem C 壊れた暗号生成器
2013年度模擬アジア地区予選 Problem E: Putter
A path to combinatorics 第6章前半(最初-Ex6.5)
原案・解説 : 野田 解答 : 野田・吉田 Problem D Futon ~布団~.
s a b f c e d 2016年度 有限幾何学 期末試験 問1:15点
JAVAでつくるオセロ 伊東飛鳥、宮島雄一 長畑弘樹、ソギ原直人.
シャノンのスイッチングゲームにおけるペアリング戦略の複雑さについて
生命情報学入門 配列のつなぎ合わせと再編成
第25章 単一始点最短路 3節 Bellman-Fordのアルゴリズム
定兼邦彦 今井浩 東京大学理学系研究科 情報科学専攻
プログラミング 4 記憶の割り付け.
25. Randomized Algorithms
First Course in Combinatorial Optimization
A Simple Algorithm for Generating Unordered Rooted Trees
連続領域におけるファジィ制約充足問題の 反復改善アルゴリズムによる解法 Solving by heuristic repair Algorithm of the Fuzzy Constraint Satisfaction Problems with Continuous Domains 北海道大学.
数独の解生成と 解に対する番号付け 理学部 情報科学科 渡辺研究室 戸神星也.
ぷよゲーの作り方入門 うでぃおふ 11th サカモトトマト Push key F5 Enter で 次のページへ.
第2回課題 配布した通り.氏名・学生番号を忘れないこと.
2016年度 有限幾何学 中間試験 問1 次のグラフを描け.(描けない場合は理由を述べよ) 各20点
生物情報ソフトウェア特論 (2)たたみ込みとハッシュに 基づくマッチング
問題作成、解説担当:中島 副担当:坪坂、松本
D: 壊れかけのヒープ 問題案: 稲葉.
Problem L: シャノワール 問題作成: 高橋 解法作成: 安達・高橋・前原 解説: 安達.
データ構造とアルゴリズム (第5回) 静岡大学工学部 安藤和敏
全体ミーティング (5/23) 村田雅之.
アルゴリズムとデータ構造 2011年6月16日
メソッドの同時更新履歴を用いたクラスの機能別分類法
情報処理Ⅱ 2005年1月25日(火) レポート課題2の解説.
ヒープソート.
コストのついたグラフの探索 分枝限定法 A*アルゴリズム.
アルゴリズムとデータ構造 2013年6月20日
問2 次の問に答えよ. (ただし,握手補題,オイラーの定理,Oreの定理 は授業で紹介したものとする) (1) 握手補題を書け.
C問題 高所恐怖症 原案・ライタ : 伊藤 テスタ : 青木・西出.
情報生命科学特別講義III (3)たたみ込みとハッシュに 基づくマッチング
ペンシルパズル「一本線」のヒント数の扱いに関する解析
Presentation transcript:

模擬国内予選2013 Problem F テトラ姫のパズル 原案:須藤 解答:大友、須藤 解説:須藤

問題概要 三角グリッド上にn個の正四面体の展開図を配置する 正四面体ごとに覆わないといけないマスが3箇所指定されている 各マスは2つ以上の面で覆ってはいけない 与えられたパズルが以下のどれかを調べる問題 パズルに解が存在(n個の展開図を配置できる) → Valid を出力 どれか1個を除けばパズルが解けるようになる → Remove を出力 除けばパズルが解けるようになる正四面体の番号も出力 1個除いただけではパズルが解けるものにならない → Invalid を出力 JAG 模擬国内予選2013 2

解法概要 与えられたパズルが解けるか判定する問題を考える 以下のn+1個の場合ついて判定すればよい  n個の正四面体すべてを使う場合  1番目の正四面体を除くn-1個の正四面体を使う場合 … n番目の正四面体を除くn-1個の正四面体を使う場合 解けるかの判定は2部グラフのマッチングで可能 nが大きい(n≦5000)ので,1個を除く場合の判定について 効率よく計算するための工夫が必要 JAG 模擬国内予選2013 3

パズルが解けるかの判定(1/2) 展開図のうち3面は置き場所が指定されているので, 1面だけが置き方に自由度がある. 置き方は(回転を無視すれば)以下のパターンだけ 以下のパターン以外では指定された3面は覆えない JAG 模擬国内予選 ☆ ☆ ★ 置き方 3 通り ☆ ☆ ★ 1 置き方 1 通り ☆ ☆ 1 ★

パズルが解けるかの判定(2/2) テトラブロックを表す頂点と,マスを表す頂点を用意し, 各テトラブロックから最後の1面を置けるマスに枝を張る 他のテトラブロックで既に使っているマスを使わないように注意 この2部グラフ上での最大マッチングを求め,サイズがテ トラブロックの個数なら解が存在 全てのテトラブロックに展開先のマスを割り当てられる 枝数がテトラブロックの個数 n に対し高々 3n なので, 最大マッチングはFord-FurkersonでO(n 2 )で求められる 1個除いた場合についても素直に計算すると全体でO(n 3 ) 各inputで20分くらい粘れば計算が終わる (参考までに)dinicで最大マッチングを求めると3分くらい JAG 模擬国内予選2013 5

高速化(1/2) 特定のテトラブロックを1個除いた場合にパズルが解ける かは,全てのテトラブロックを使う場合のマッチングの 結果を用いればO(n)で判定できる 1個のテトラブロックを除いてパズルが解けるようになる とき,全ブロックを使ったときのグラフにサイズn-4以 上のマッチングが存在する あるテトラブロックを除いて作ったグラフで,サイズn-1のマッ チングが存在したとする.除いたブロックを戻すと使えないマス が3つ増えるため,最大で3つの組が解消される.このサイズn-4 の割り当ては,全てのテトラブロックを使った場合のグラフ上で も有効. 全ブロック使用時に展開できないテトラブロックが5個以上あっ たら Invalid と判定してしまって良い JAG 模擬国内予選2013 6

高速化(2/2) 1個のテトラブロックを除いたとき,マスを割り当てら れなかった(最大4個の)ブロックについてだけ,割り当 てができるかチェックすれば良い グラフを更新する(使えないマスの情報を更新) 各頂点に使用不可フラグを持たせておくと更新の実装が楽 割り当てできなかったブロックについて割り当てがあるか調べ る(Ford-Furkersonで1個あたりO(n)) 調べるブロックが定数個なので,O(n)で判定可能 結果の使い回しにより,1個のブロックを除いた場合を 全て調べても全体でO(n 2 ) 各inputで数秒待てば実行が終わる JAG 模擬国内予選2013 7

補足 2部グラフの構築が面倒なので,手の空いている人が実装 を詰めて置かないと辛いです 展開図のパターンを列挙しておくなど ローカル実行なので,O(n 3 )でのんびり待つ戦略もあり ただし残り時間に余裕がある場合に限る 待ち時間に高速化→2つ目のinputに別プログラム提出 などとすると答えが合ってても不正解になるので注意 どの1個を除いても解けるようになるケースが存在します 下図のパターン(inputにはシャッフル&回転して入っています) JAG 模擬国内予選 a1a 1b1b 3b 2b 2a2c2c 4a 1c1c3a 3c 4b 4c 5a 5b … 4998a 4997c 4998b 4998c 4999b 4999c 5000b 4999a 5000c 5000a

ジャッジ解 大友 194行(4851B), C++ 215行(5459B), C++ (dinic版) 須藤 166行(4256B), C++ 158行(3537B), C++ (O(n 3 )版) JAG 模擬国内予選2013 9

結果 Submitチーム数:1 Acceptチーム数:1 総Submit:1 First Accept:MadokaMAgica (2h46m) JAG 模擬国内予選

JAG 模擬国内予選 Last dataset