I: Tokyo Olympics Center

Slides:



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

G 問題 コードアート オンライン 原案:西出 ライタ:伊藤 テスタ:西出. 問題概要 0 大きさのさまざまな n 個の円に多角形 m 個を入れら れるか判定する問題 0 ただし、同じ円に複数の多角形を入れることはでき ない 0 もし、入れられる場合は、辞書順最小の入れ方を出 力 ① ② ③ ① ②.
SQL による数独の解法 青山学院大学理工学部 矢吹太朗・佐久田博司. 数独とは何か ナンプレとも呼ばれ る制約充足問題 各行・列・ブロック に 1 から 9 の数字を一 つずつ当てはめる 新聞等に載っている ものはとても簡単 人間には難しいもの → もある.
原案 : 野田 解答 : 野田・山 口 問題文 : 野田 PROBLEM E: PSYCHIC ACCELERATOR ~ とある超能力の物体加速器~
模擬国内予選2013 Problem F テトラ姫のパズル 原案:須藤 解答:大友、須藤 解説:須藤.
Flash SWF ファイル書き換え PHP extension 2008 年 7 月 21 日 よや.
J: Magical Switches JAG 模擬地区予選 2013 原案:保坂 解答:保坂・楠本 解説:保坂.
初年次セミナー 第13回 2次元グラフィックス(1).
Writter: slip0110 Tester: kioa341
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第3回 配列(1) 情報・知能工学系 山本一公
連続系アルゴリズム演習 第2回 OpenMPによる課題.
Problem H: Queen’s case
データ構造と アルゴリズム 第十二回 知能情報学部 知能情報学科 新田直也.
動的計画法 表の作成 制約の追加 練習問題.
動的計画法 表の作成 制約の追加 練習問題.
近似アルゴリズム 第10章 終了時刻最小化スケジューリング
Ex7. Search for Vacuum Problem
ICPC夏合宿09 Day2 Problem F Voronoi Island ~ボロノイ島戦記~
A: Attack the Moles 原案:高橋 / 解説:保坂.
Ex8. Search for Vacuum Problem(2)
Intelligent Circular Perfect Cleaner(ICPC)
Princess, a Strategiest
問題作成・解説: 北村 解答作成協力: 小西・松本
システムプログラミング 第5回 情報工学科 篠埜 功 ヒアドキュメント レポート課題 main関数の引数 usageメッセージ
基礎プログラミングおよび演習 第9回
Problem G : Entangled Tree
原案:阿部 担当:福澤, 笠原 英訳:寺島 解説:福澤
スーパー・シェイプ・ショット Super Shape Shot ゲームをつくろう <説明と進行>
JAG Regional Practice Contest 2012 問題C: Median Tree
第二回 連立1次方程式の解法 内容 目標 連立1次方程式の掃出し法 初期基底を求める 連立1次方程式を掃出し法を用いてExcelで解析する
Problem C: Princess' Japanese
模擬国内予選2014 Problem C 壊れた暗号生成器
2013年度模擬アジア地区予選 Problem E: Putter
Problem D: King Slime ~キングスライム~
Hybrid ccにおけるアニメーションが破綻しないための処理系の改良
問題 1 キーボードから入力した数の合計を計算するプログラムを 作成せよ。最初に、何個の数を入力するかその数を入力 するようにする。
最短路問題のための LMS(Levelwise Mesh Sparsification)
原案・解説 : 野田 解答 : 野田・吉田 Problem D Futon ~布団~.
論理回路 第8回
最短経路.
早わかりアントコロニー最適化 (ACO: Ant Colony Optimization)
モデリングシミュレーション入門(井庭崇)
CGと形状モデリング 授業資料 長井 超慧(東京大学)
オーサリングツール&ブラウザの 技術的トピック
情報工学科 3年生対象 専門科目 システムプログラミング 第5回、第6回 ヒアドキュメント レポート課題 情報工学科 篠埜 功.
第25章 単一始点最短路 3節 Bellman-Fordのアルゴリズム
ネットワーク理論 Text. Part 3 pp 最短路問題 pp 最大流問題 pp.85-94
卒業研究中間発表 社会情報システム学講座 高橋義昭.
離散数学 08. グラフの探索 五島.
プログラミング 4 記憶の割り付け.
第3回 アルゴリズムと計算量 2019/2/24.
0.2 プロジェクトの準備 DXライブラリを使うための準備.
早わかりアントコロニー最適化 (Ant Colony Optimization)
離散数学 07. 木 五島.
実習その2 銀河までの距離を求める 信州大学工学部情報工学科2年 村仲 渉.
GPGPUによる 飽和高価値 アイテム集合マイニング
Ex7. Search for Vacuum Problem
ナップサック問題 クマさん人形をめぐる熱いドラマの結末.
D: 壊れかけのヒープ 問題案: 稲葉.
Problem L: シャノワール 問題作成: 高橋 解法作成: 安達・高橋・前原 解説: 安達.
データ構造とアルゴリズム (第5回) 静岡大学工学部 安藤和敏
プログラミング入門 電卓を作ろう・パートI!!.
CGプログラミング論 平成28年5月18日 森田 彦.
コストのついたグラフの探索 分枝限定法 A*アルゴリズム.
C問題 高所恐怖症 原案・ライタ : 伊藤 テスタ : 青木・西出.
3.1 シューティングゲームの当たり判定 当たったら死亡.
コンピュータの高速化により, 即座に計算できるようになってきたが, 手法的にはコンピュータ出現以前に考え出された 方法が数多く使われている。
情報処理Ⅱ 第3回 2004年10月19日(火).
情報処理Ⅱ 2006年10月20日(金).
CGプログラミング論 平成28年5月11日 森田 彦.
Presentation transcript:

I: Tokyo Olympics Center †JAG† 春コンテスト 2014 原案:楠本 解答:楠本,汐田 解説:楠本 ※http://nyc.niye.go.jp/facilities/d6-1.html

問題概要 合宿後,みんなが泊まった後の部屋点検を任された!! 右の図のような地図が与えられる A,B,C,...が宿泊棟の各ユニットの床, ‘.’ が壁を表す. 周り4マスのうち3マスが ‘.’ である セルは部屋である. そうでないセルは床である. 最初,セル(s,t) に K 人手伝ってくれる 人(スタッフ)がいるので分担して全ての 部屋をチェックしたい. 部屋移動に Tmove 時間,部屋チェック に Tcheck 時間かかる. ................... .....AAABBBBBBB.... ...A.AA.A...B.B..B. ..AAAAAAAABBBBBBBB. ...A..A.A.....B.... ......A.......BBBB. ....A.AA..C.C...B.. ...AAAAACCCCCCBBBB. ...A..A...C.C...B.. ※http://nyc.niye.go.jp/facilities/d2-5.html

問題概要 (cont.) 以下のように分担する. それぞれのユニットをスタッフのうちの誰かに割り振る. 各スタッフはそれぞれ割り当てられたユニットをどう回るか決める. 一度回る順番を決めたら,そのとおりに回らないと いけない A→E→C D→F B ※http://nyc.niye.go.jp/facilities/d6-1.html

問題概要 (cont.) 自分の分担されたユニットをチェックし終わったスタッフは 元の位置 (s,t) に戻らなければならない. 全部屋をチェックし終わるのにかかる最短時間を計算せよ. 制約: 地図の横幅,縦幅≤50 ユニットの種類数≤12 各ユニット内の部屋の個数≤12 ※http://nyc.niye.go.jp/facilities/d2-5.html

解法 まず各セル同士の距離を前もって求めておく 各セルを始点にしてBFSすればよい 計算時間は O(部屋数^2) あと,部屋の位置をあらかじめ列挙しておく bit DPをいっぱいやる 「ユニット内の部屋巡り」「ユニット間の移動」「スタッフへの割り振り」がそれぞれ層構造みたいになっていて, 巡回セールスマン問題型のbit DP を各層ごとに やるイメージ

ユニット内の部屋巡り dp1[unit_id][seen_rooms][first_room][current_room] := ユニット unit_id 内の部屋を,first_room を始点として seen_rooms(部屋の集合) を見た上で current_room に至る ときの最短時間 をまず計算. よくある bit DP これを計算できると, 1つのユニットを全部調べるための 最短時間がわかる. seen_rooms first_room current_room

ユニット間の移動 dp2[seen_units][current_unit][current_room] := スタート位置 (s,t) からスタートしてユニットの集合 seen_units 内の全部屋をチェックし,ユニットcurrent_unit の部屋 current_room に至るときの最短時間. dp1の計算結果を使って計算する. dp3[seen_units] := seen_units 内の全部屋をチェックして 元のスタート位置 (s,t) に戻るための 最短時間 これは dp2 から即座に求まる. seen_units current_unit, current room

スタッフへの割り振り dp4[k][assigned_units] := k 人のスタッフに assigned_units(ユニットの集合) を割り振るときの最短時間 擬似コードは右みたいな 感じになる foreachは右下の実装が オススメ for k = 1→K for as = 0→2^#units rest = (2^#units-1) xor as foreach <<s:subset of rest>> dp4[k][as] = min(dp4[k][as], max(dp4[i-1][as], dp3[s])) for (int s=rest; ; s=(s-1)&s) { // <TODO> if (s == 0) break; } k, assigned_units A→E→C D→F ・・・・・・

bit DP の計算量は? 1つのユニットの部屋の個数の上界を R,ユニットの個数を U とする. 漸近的な計算量は以下のようになる. dp1: O(UR^3 2^R) dp2&dp3: O(U^2 R^2 2^U) dp4: O(K 3^U) U,R≤12 だと全体的に少し大きいが,定数倍の枝刈りが効くしループ内の処理が軽いので実際には高速に動く. (あとTLEも5秒あって安心?)

結果 提出数 : 5 解いた人: kawatea(194:01) (First AC) wakaba (198:00) uwi(235:58) ジャッジ解: 楠本 : 4980bytes (手抜き実装:4554bytes) 汐田 : 5460bytes 保坂 : 5455bytes 実装がそこそこ重いです ※http://nyc.niye.go.jp/facilities/d2-6.html

余談 この問題は夏合宿2013で部屋点検を頑張って行った後, スタッフの地道な大変さを表すために合宿から帰宅した直後に作った. マナーを守って楽しく合宿!!!