Problem G : Entangled Tree

Slides:



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

原案 : 野田 解答 : 野田・山 口 問題文 : 野田 PROBLEM E: PSYCHIC ACCELERATOR ~ とある超能力の物体加速器~
A Simple Constant Time Enumeration Algorithm for Free Trees 中野 眞一 宇野 毅明 群馬大学 情報学研究所 2003 年 9 月 19 日 アルゴリズム研究会.
J: Magical Switches JAG 模擬地区予選 2013 原案:保坂 解答:保坂・楠本 解説:保坂.
Problem J: いにしえの数式 問題作成・解説: 北村 解答作成協力: 八森.
区間グラフにおける区間表現からMPQ-treeを効率よく構成するアルゴリズム
4.3 マージソート.
ICPC夏合宿09 Day3 Problem D : Luigi‘s Tavern -ルイージの酒場-
Day2 Problem I: Memory Match ~神経衰弱~
簡潔データ構造 国立情報学研究所 定兼 邦彦.
ヒープソートの演習 第13回.
アルゴリズムとデータ構造 第8回 ソート(3).
2分探索.
アルゴリズムとデータ構造 2013年6月18日
アルゴリズムとデータ構造1 2005年7月8日
アルゴリズムとデータ構造 2010年7月5日
ICPC夏合宿09 Day2 Problem F Voronoi Island ~ボロノイ島戦記~
第11回 整列 ~ バケットソート,基数ソート,ヒープソート~
データ構造とアルゴリズム論 第6章 探索のアルゴリズム
On the Enumeration of Colored Trees
2章 データ構造.
原案:阿部 担当:福澤, 笠原 英訳:寺島 解説:福澤
JAG Regional Practice Contest 2012 問題C: Median Tree
アルゴリズムとデータ構造 2012年6月14日
データ構造とアルゴリズム 第7回 木 ~ データ構造(3)~.
原案: 矢藤(kohyatoh) 解答: 高原(rankalee, shimejitan), 矢藤 解説: 矢藤
Problem D: King Slime ~キングスライム~
ヒープソートの復習.
原案・解説 : 野田 解答 : 野田・吉田 Problem D Futon ~布団~.
アルゴリズムとデータ構造 2011年6月14日
アルゴリズムとデータ構造 第7回探索のためのデータ構造(1) 2015/11/18 アルゴリズムとデータ構造 2015.
二分探索木によるサーチ.
2009/10/16 いろいろなデータ構造 第3講: 平成21年10月16日 (金) 4限 E252教室 コンピュータアルゴリズム.
茨城大学 工学部 知能システム工学科 井上 康介 E2棟801号室
決定木とランダムフォレスト 和田 俊和.
アルゴリズムとデータ構造1 2006年7月4日
離散数学 08. グラフの探索 五島.
アルゴリズムとデータ構造1 2006年6月16日
アルゴリズムとデータ構造 第3章 ヒープ 6月10日分
データ構造と アルゴリズム 第七回 知能情報学部 新田直也.
データ構造と アルゴリズム 第六回 知能情報学部 新田直也.
決定木 Decision Tree DT 明治大学 理工学部 応用化学科 データ化学工学研究室 金子 弘昌.
A Simple Algorithm for Generating Unordered Rooted Trees
離散数学 07. 木 五島.
基本情報技術概論(第6回) 埼玉大学 理工学研究科 堀山 貴史
データ構造とアルゴリズム論 第9章 木構造 平成29年12月20日 森田 彦.
データ構造とアルゴリズム論 第9章 木構造 平成30年6月27日 森田 彦.
プログラミング 4 木構造とヒープ.
15.cons と種々のデータ構造.
アルゴリズムとデータ構造 第3章 ヒープ 5月31日分
アルゴリズムとデータ構造 第3章 ヒープ 5月31日分の復習
情報数理Ⅱ 第11章 データ構造 平成29年1月18日.
D: 壊れかけのヒープ 問題案: 稲葉.
AVL木.
アルゴリズムとデータ構造 2012年7月2日
アルゴリズムとデータ構造 2011年6月28日
アルゴリズムとデータ構造 2011年6月16日
基本情報技術概論(第6回) 埼玉大学 理工学研究科 堀山 貴史
ヒープソートの復習 第12回.
情報工学概論 (アルゴリズムとデータ構造)
アルゴリズムとデータ構造1 2009年7月2日
アルゴリズムとデータ構造 2013年7月2日
アルゴリズムとデータ構造 --- 理論編 --- 山本 真基
アルゴリズムとデータ構造 第2章 リスト構造 5月24日分
ヒープソート.
アルゴリズムとデータ構造 2013年6月20日
参考:大きい要素の処理.
グラフの列挙 中野 眞一    (群馬大学) 2019/9/14 列挙学校.
7.木構造 7-1.データ構造としての木 7-2.2分探索木 7-3.高度な木.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
Presentation transcript:

Problem G : Entangled Tree 原案 : 野田 模範解答 : 野田・福澤 解説 : 野田

問題 (1) 系統樹を表す木が与えられる 枝同士が接しない、かつ若い番号の葉がなるべく左に来るように並び変えた際、クエリで与えられた葉が左から何番目に来るか求めよ 1 2 3 4 5 6 1 4 2 5 3 6

問題(2) 入力で与えられる情報は枝分かれ(ノード)位置と枝分かれ後のノード番号 ノード数N<=10万

解法 木の構築 トポロジカルソート

木の構築 入力で与えられる枝分かれ情報(ノード情報)から木を構築する ノードを高い順にソート 高い位置の分岐から順に木を構築 それぞれの分岐以下にある葉のうち、最も若い番号を記憶させる 根の番号を記録する

木構造(例) ノード構造体 以上を配列として保持 親ノードへのポインタ(or番号) 子ノードへのポインタ(or番号)配列 (ノード以下にある葉のうち、最も若い葉の番号) 以上を配列として保持

木の構築 1 5 6 3 6 1 4 2 5 1 2 3 4 5 6

木の構築 親ノード→子ノードの書き換え 子ノード→親ノードの書き換え 1 5 6 3 6 1 4 2 5 1 2 3 4 5 6

木の構築 1 5 6 3 6 1 4 2 5 1 2 3 4 5 6

木の構築 1 5 6 3 6 1 4 2 5 1 2 3 4 5 6

木の構築 1 5 6 3 6 1 4 2 5 1 2 3 4 5 6

木の構築 それぞれの分岐以下にある葉のうち、最も若い番号を記憶させる 1 5 6 3 6 3 1 4 1 2 2 5 1 2 3 4 5 6

トポロジカルソート 木の根から若い番号の葉に向かってDFS(深さ優先探索) 葉に到着した際に番号を配列に追加していく

トポロジカルソート 先ほどメモした番号の 小さい順にたどる 葉に到達した場合は その番号を配列に保持する 1 5 6 3 6 3 1 4 1  先ほどメモした番号の 小さい順にたどる  葉に到達した場合は その番号を配列に保持する 1 5 6 3 6 3 1 4 1 2 2 5 1 2 3 4 5 6

トポロジカルソート 1 5 6 3 6 3 1 4 1 2 2 5 1 4 2 3 5 6

トポロジカルソート 1 5 6 トラックバックして 次の枝を探す 3 6 3 1 4 1 2 5 2 1 4 2 5 3 6

トポロジカルソート 1 5 6 3 6 3 1 4 1 2 5 2 1 4 2 5 3 6

トポロジカルソート 1 5 6 3 6 3 1 4 1 2 5 2 1 4 2 5 3 6

トポロジカルソート 1 5 6 3 6 3 1 4 1 2 5 2 1 4 2 5 3 6

計算量 ノード情報を高さでソートする・・・O(NlogN) 各ノード以下の若いノード番号の記録・・・O(N)

注意(1) N=10万のため、計算量がO(N2)となるアルゴリズムを使用することができない O(NlogN)に抑えなければならない

注意(2) 再帰関数は10万回再帰することができない スタックオーバーフローを引き起こす ループとスタックデータ構造で代用する RuntimeError ループとスタックデータ構造で代用する

注意(3) DFSでたどる順番を間違えないようにする 枝を正しくソートしてからたどる 模範解答作成者二名のうち両方ともこれではまりました

模範解答 野田 C++ 143行 福澤 Java 90行

結果 First Submit : - (-) First Accepted : - (-) Reulst : 0/0

ジャッジより きちんと整理してからプログラムを書き始めないと間違い無く嵌ります

御清聴有難うございました