SlideShare a Scribd company logo
ソート




原案、問題文:宮村
解答:宮村、橋本
 解説:宮村
問題概要


   配列を値の交換によってソートしたい。
   i と j を交換するのに C[i][j] のコストが必要になる。
   順列 p をソートするのに必要な最小コスト =: f(p)
   f(p) の最大値を求める。
着眼点

   f(p) を効率よく求めるのは案外大変
    ( 参考 : Silly Sort )
   最も愚直にコストを求めるには、 p からソートされた
    状態へ Dijkstra を使う。
   f(p) を求めるのに N! 程度のコストが必要になり、
    全ての p について求めると (N!)^2 で TLE する。
   逆に、ソートされた状態からの距離を考えれば
    Dijkstra を 1 回行うだけでよい。
解法



   N! 通りの全ての順列をノードとするグラフを考える。
   ソートされた順列を始点として Dijkstra 法などで各
    ノードまでの距離を求める。
   距離の最大値が答えとなる。
グラフとして見る


0, 1, 2      0, 2, 1             1, 0, 2




1, 2, 0      2, 0, 1             2, 1, 0




                       C[0][1]
                       C[0][2]
                       C[1][2]
実装

   各順列までの距離をどのようなデータ構造で持つ
    か?
    1. 連想配列で配列をキーにする
    2. 順列をビット列に落とす (3 * 7 bit あれば十分 )
    3. 順列に対する最小完全ハッシュ関数を利用す
       る ( 変換に N^2 かかるのがネック )
   1 や 3 だと実装次第で TLE することもあるようで
    す。定数が重いとかではなく計算量が増加します。
解答例

   宮村 (C++)
    95 行 1644 byte


   橋本 (Java)
    90 行 1800 byte

More Related Content

What's hot

Coreset+SVM (論文紹介)
Coreset+SVM (論文紹介)Coreset+SVM (論文紹介)
Coreset+SVM (論文紹介)
Naotaka Yamada
 
topology of musical data
topology of musical datatopology of musical data
topology of musical data
Tatsuki SHIMIZU
 
IJPC-2 C問題解説
IJPC-2 C問題解説IJPC-2 C問題解説
IJPC-2 C問題解説
yutaka1999
 
M1 gp_Disco
M1 gp_DiscoM1 gp_Disco
M1 gp_Disco
Takuya Shimojoh
 
Data Analysis - Chapter two
Data Analysis - Chapter twoData Analysis - Chapter two
Data Analysis - Chapter two
Kousuke Takeuhi
 
Introduction to Persistence Theory
Introduction to Persistence TheoryIntroduction to Persistence Theory
Introduction to Persistence Theory
Tatsuki SHIMIZU
 
[DL Hacks] Deterministic Variational Inference for RobustBayesian Neural Netw...
[DL Hacks] Deterministic Variational Inference for RobustBayesian Neural Netw...[DL Hacks] Deterministic Variational Inference for RobustBayesian Neural Netw...
[DL Hacks] Deterministic Variational Inference for RobustBayesian Neural Netw...
Deep Learning JP
 
Packing
PackingPacking
代数トポロジー入門
代数トポロジー入門代数トポロジー入門
代数トポロジー入門
Tatsuki SHIMIZU
 
UTPC2012 - K
UTPC2012 - KUTPC2012 - K
UTPC2012 - K
omeometo
 
PRMLrevenge_3.3
PRMLrevenge_3.3PRMLrevenge_3.3
PRMLrevenge_3.3
Naoya Nakamura
 
Ninja of Train
Ninja of TrainNinja of Train
Ninja of Train
tomerun
 
MMDs10.6-7
MMDs10.6-7MMDs10.6-7
MMDs10.6-7
mfumi
 
Warshall froyd
Warshall froydWarshall froyd
Warshall froyd
MatsuiRyo
 
2013.12.26 prml勉強会 線形回帰モデル3.2~3.4
2013.12.26 prml勉強会 線形回帰モデル3.2~3.42013.12.26 prml勉強会 線形回帰モデル3.2~3.4
2013.12.26 prml勉強会 線形回帰モデル3.2~3.4
Takeshi Sakaki
 
[DL輪読会]Clebsch–Gordan Nets: a Fully Fourier Space Spherical Convolutional Neu...
[DL輪読会]Clebsch–Gordan Nets: a Fully Fourier Space Spherical Convolutional Neu...[DL輪読会]Clebsch–Gordan Nets: a Fully Fourier Space Spherical Convolutional Neu...
[DL輪読会]Clebsch–Gordan Nets: a Fully Fourier Space Spherical Convolutional Neu...
Deep Learning JP
 
introductino to persistent homology and topological data analysis
introductino to persistent homology and topological data analysisintroductino to persistent homology and topological data analysis
introductino to persistent homology and topological data analysis
Tatsuki SHIMIZU
 
情報幾何の基礎輪読会 #1
情報幾何の基礎輪読会 #1情報幾何の基礎輪読会 #1
情報幾何の基礎輪読会 #1
Tatsuki SHIMIZU
 
サンプリング定理
サンプリング定理サンプリング定理
サンプリング定理
Toshihisa Tanaka
 

What's hot (20)

Coreset+SVM (論文紹介)
Coreset+SVM (論文紹介)Coreset+SVM (論文紹介)
Coreset+SVM (論文紹介)
 
topology of musical data
topology of musical datatopology of musical data
topology of musical data
 
IJPC-2 C問題解説
IJPC-2 C問題解説IJPC-2 C問題解説
IJPC-2 C問題解説
 
M1 gp_Disco
M1 gp_DiscoM1 gp_Disco
M1 gp_Disco
 
Data Analysis - Chapter two
Data Analysis - Chapter twoData Analysis - Chapter two
Data Analysis - Chapter two
 
Introduction to Persistence Theory
Introduction to Persistence TheoryIntroduction to Persistence Theory
Introduction to Persistence Theory
 
[DL Hacks] Deterministic Variational Inference for RobustBayesian Neural Netw...
[DL Hacks] Deterministic Variational Inference for RobustBayesian Neural Netw...[DL Hacks] Deterministic Variational Inference for RobustBayesian Neural Netw...
[DL Hacks] Deterministic Variational Inference for RobustBayesian Neural Netw...
 
Packing
PackingPacking
Packing
 
代数トポロジー入門
代数トポロジー入門代数トポロジー入門
代数トポロジー入門
 
UTPC2012 - K
UTPC2012 - KUTPC2012 - K
UTPC2012 - K
 
PRMLrevenge_3.3
PRMLrevenge_3.3PRMLrevenge_3.3
PRMLrevenge_3.3
 
Ninja of Train
Ninja of TrainNinja of Train
Ninja of Train
 
MMDs10.6-7
MMDs10.6-7MMDs10.6-7
MMDs10.6-7
 
Warshall froyd
Warshall froydWarshall froyd
Warshall froyd
 
2013.12.26 prml勉強会 線形回帰モデル3.2~3.4
2013.12.26 prml勉強会 線形回帰モデル3.2~3.42013.12.26 prml勉強会 線形回帰モデル3.2~3.4
2013.12.26 prml勉強会 線形回帰モデル3.2~3.4
 
[DL輪読会]Clebsch–Gordan Nets: a Fully Fourier Space Spherical Convolutional Neu...
[DL輪読会]Clebsch–Gordan Nets: a Fully Fourier Space Spherical Convolutional Neu...[DL輪読会]Clebsch–Gordan Nets: a Fully Fourier Space Spherical Convolutional Neu...
[DL輪読会]Clebsch–Gordan Nets: a Fully Fourier Space Spherical Convolutional Neu...
 
introductino to persistent homology and topological data analysis
introductino to persistent homology and topological data analysisintroductino to persistent homology and topological data analysis
introductino to persistent homology and topological data analysis
 
情報幾何の基礎輪読会 #1
情報幾何の基礎輪読会 #1情報幾何の基礎輪読会 #1
情報幾何の基礎輪読会 #1
 
CMSI計算科学技術特論B(8) オーダーN法1
 CMSI計算科学技術特論B(8) オーダーN法1 CMSI計算科学技術特論B(8) オーダーN法1
CMSI計算科学技術特論B(8) オーダーN法1
 
サンプリング定理
サンプリング定理サンプリング定理
サンプリング定理
 

Viewers also liked

Segpair
SegpairSegpair
Segpair
oupc
 
Magical
MagicalMagical
Magical
oupc
 
Gcd
GcdGcd
Gcd
oupc
 
Palin
PalinPalin
Palin
oupc
 
Kth
KthKth
Kth
oupc
 
Goto
GotoGoto
Goto
oupc
 
Comment
CommentComment
Comment
oupc
 
One
OneOne
One
oupc
 
Cube
CubeCube
Cube
oupc
 
Permutation
PermutationPermutation
Permutation
oupc
 
Trip
TripTrip
Trip
oupc
 
Paren
ParenParen
Paren
oupc
 
Sharp2sat
Sharp2satSharp2sat
Sharp2sat
oupc
 
Rmq
RmqRmq
Rmq
oupc
 
Replace
ReplaceReplace
Replace
oupc
 
Sanpo
SanpoSanpo
Sanpo
oupc
 
指数時間アルゴリズム入門
指数時間アルゴリズム入門指数時間アルゴリズム入門
指数時間アルゴリズム入門
Yoichi Iwata
 

Viewers also liked (18)

Segpair
SegpairSegpair
Segpair
 
Magical
MagicalMagical
Magical
 
Gcd
GcdGcd
Gcd
 
Palin
PalinPalin
Palin
 
Kth
KthKth
Kth
 
Goto
GotoGoto
Goto
 
Comment
CommentComment
Comment
 
One
OneOne
One
 
Cube
CubeCube
Cube
 
Permutation
PermutationPermutation
Permutation
 
1
11
1
 
Trip
TripTrip
Trip
 
Paren
ParenParen
Paren
 
Sharp2sat
Sharp2satSharp2sat
Sharp2sat
 
Rmq
RmqRmq
Rmq
 
Replace
ReplaceReplace
Replace
 
Sanpo
SanpoSanpo
Sanpo
 
指数時間アルゴリズム入門
指数時間アルゴリズム入門指数時間アルゴリズム入門
指数時間アルゴリズム入門
 

Similar to Sort

katagaitai workshop #7 crypto ナップサック暗号と低密度攻撃
katagaitai workshop #7 crypto ナップサック暗号と低密度攻撃katagaitai workshop #7 crypto ナップサック暗号と低密度攻撃
katagaitai workshop #7 crypto ナップサック暗号と低密度攻撃
trmr
 
文字列処理
文字列処理文字列処理
文字列処理
Ryunosuke Iwai
 
高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装
MITSUNARI Shigeo
 
今さら聞けないHadoop勉強会第2回 セントラルソフト株式会社(20120228)
今さら聞けないHadoop勉強会第2回 セントラルソフト株式会社(20120228)今さら聞けないHadoop勉強会第2回 セントラルソフト株式会社(20120228)
今さら聞けないHadoop勉強会第2回 セントラルソフト株式会社(20120228)
YoheiOkuyama
 
ディジタル信号処理の課題解説 その3
ディジタル信号処理の課題解説 その3ディジタル信号処理の課題解説 その3
ディジタル信号処理の課題解説 その3
noname409
 
ダブル配列の実装方法
ダブル配列の実装方法ダブル配列の実装方法
ダブル配列の実装方法
Higashiyama Masahiko
 
Word Sense Induction & Disambiguaon Using Hierarchical Random Graphs (EMNLP2010)
Word Sense Induction & Disambiguaon Using Hierarchical Random Graphs (EMNLP2010)Word Sense Induction & Disambiguaon Using Hierarchical Random Graphs (EMNLP2010)
Word Sense Induction & Disambiguaon Using Hierarchical Random Graphs (EMNLP2010)
Koji Matsuda
 
【Unity道場スペシャル 2017博多】クォータニオン完全マスター
【Unity道場スペシャル 2017博多】クォータニオン完全マスター【Unity道場スペシャル 2017博多】クォータニオン完全マスター
【Unity道場スペシャル 2017博多】クォータニオン完全マスター
Unity Technologies Japan K.K.
 
PRML輪講用資料10章(パターン認識と機械学習,近似推論法)
PRML輪講用資料10章(パターン認識と機械学習,近似推論法)PRML輪講用資料10章(パターン認識と機械学習,近似推論法)
PRML輪講用資料10章(パターン認識と機械学習,近似推論法)
Toshiyuki Shimono
 
第9回スキル養成講座講義資料
第9回スキル養成講座講義資料第9回スキル養成講座講義資料
第9回スキル養成講座講義資料
keiodig
 
第10回 配信講義 計算科学技術特論A(2021)
第10回 配信講義 計算科学技術特論A(2021)第10回 配信講義 計算科学技術特論A(2021)
第10回 配信講義 計算科学技術特論A(2021)
RCCSRENKEI
 
非同期処理の基礎
非同期処理の基礎非同期処理の基礎
非同期処理の基礎
信之 岩永
 
[DL輪読会]Convolutional Conditional Neural Processesと Neural Processes Familyの紹介
[DL輪読会]Convolutional Conditional Neural Processesと Neural Processes Familyの紹介[DL輪読会]Convolutional Conditional Neural Processesと Neural Processes Familyの紹介
[DL輪読会]Convolutional Conditional Neural Processesと Neural Processes Familyの紹介
Deep Learning JP
 
C++によるソート入門
C++によるソート入門C++によるソート入門
C++によるソート入門
AimingStudy
 
20181214 clebsch gordan_mizuta
20181214 clebsch gordan_mizuta20181214 clebsch gordan_mizuta
20181214 clebsch gordan_mizuta
Rei Mizuta
 
動的計画法を極める!
動的計画法を極める!動的計画法を極める!
Chainerの使い方と自然言語処理への応用
Chainerの使い方と自然言語処理への応用Chainerの使い方と自然言語処理への応用
Chainerの使い方と自然言語処理への応用
Seiya Tokui
 
文献紹介:Gate-Shift Networks for Video Action Recognition
文献紹介:Gate-Shift Networks for Video Action Recognition文献紹介:Gate-Shift Networks for Video Action Recognition
文献紹介:Gate-Shift Networks for Video Action Recognition
Toru Tamaki
 
Algorithm 速いアルゴリズムを書くための基礎
Algorithm 速いアルゴリズムを書くための基礎Algorithm 速いアルゴリズムを書くための基礎
Algorithm 速いアルゴリズムを書くための基礎
Kenji Otsuka
 
Back propagation
Back propagationBack propagation
Back propagation
T2C_
 

Similar to Sort (20)

katagaitai workshop #7 crypto ナップサック暗号と低密度攻撃
katagaitai workshop #7 crypto ナップサック暗号と低密度攻撃katagaitai workshop #7 crypto ナップサック暗号と低密度攻撃
katagaitai workshop #7 crypto ナップサック暗号と低密度攻撃
 
文字列処理
文字列処理文字列処理
文字列処理
 
高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装
 
今さら聞けないHadoop勉強会第2回 セントラルソフト株式会社(20120228)
今さら聞けないHadoop勉強会第2回 セントラルソフト株式会社(20120228)今さら聞けないHadoop勉強会第2回 セントラルソフト株式会社(20120228)
今さら聞けないHadoop勉強会第2回 セントラルソフト株式会社(20120228)
 
ディジタル信号処理の課題解説 その3
ディジタル信号処理の課題解説 その3ディジタル信号処理の課題解説 その3
ディジタル信号処理の課題解説 その3
 
ダブル配列の実装方法
ダブル配列の実装方法ダブル配列の実装方法
ダブル配列の実装方法
 
Word Sense Induction & Disambiguaon Using Hierarchical Random Graphs (EMNLP2010)
Word Sense Induction & Disambiguaon Using Hierarchical Random Graphs (EMNLP2010)Word Sense Induction & Disambiguaon Using Hierarchical Random Graphs (EMNLP2010)
Word Sense Induction & Disambiguaon Using Hierarchical Random Graphs (EMNLP2010)
 
【Unity道場スペシャル 2017博多】クォータニオン完全マスター
【Unity道場スペシャル 2017博多】クォータニオン完全マスター【Unity道場スペシャル 2017博多】クォータニオン完全マスター
【Unity道場スペシャル 2017博多】クォータニオン完全マスター
 
PRML輪講用資料10章(パターン認識と機械学習,近似推論法)
PRML輪講用資料10章(パターン認識と機械学習,近似推論法)PRML輪講用資料10章(パターン認識と機械学習,近似推論法)
PRML輪講用資料10章(パターン認識と機械学習,近似推論法)
 
第9回スキル養成講座講義資料
第9回スキル養成講座講義資料第9回スキル養成講座講義資料
第9回スキル養成講座講義資料
 
第10回 配信講義 計算科学技術特論A(2021)
第10回 配信講義 計算科学技術特論A(2021)第10回 配信講義 計算科学技術特論A(2021)
第10回 配信講義 計算科学技術特論A(2021)
 
非同期処理の基礎
非同期処理の基礎非同期処理の基礎
非同期処理の基礎
 
[DL輪読会]Convolutional Conditional Neural Processesと Neural Processes Familyの紹介
[DL輪読会]Convolutional Conditional Neural Processesと Neural Processes Familyの紹介[DL輪読会]Convolutional Conditional Neural Processesと Neural Processes Familyの紹介
[DL輪読会]Convolutional Conditional Neural Processesと Neural Processes Familyの紹介
 
C++によるソート入門
C++によるソート入門C++によるソート入門
C++によるソート入門
 
20181214 clebsch gordan_mizuta
20181214 clebsch gordan_mizuta20181214 clebsch gordan_mizuta
20181214 clebsch gordan_mizuta
 
動的計画法を極める!
動的計画法を極める!動的計画法を極める!
動的計画法を極める!
 
Chainerの使い方と自然言語処理への応用
Chainerの使い方と自然言語処理への応用Chainerの使い方と自然言語処理への応用
Chainerの使い方と自然言語処理への応用
 
文献紹介:Gate-Shift Networks for Video Action Recognition
文献紹介:Gate-Shift Networks for Video Action Recognition文献紹介:Gate-Shift Networks for Video Action Recognition
文献紹介:Gate-Shift Networks for Video Action Recognition
 
Algorithm 速いアルゴリズムを書くための基礎
Algorithm 速いアルゴリズムを書くための基礎Algorithm 速いアルゴリズムを書くための基礎
Algorithm 速いアルゴリズムを書くための基礎
 
Back propagation
Back propagationBack propagation
Back propagation
 

More from oupc

Knapsack
KnapsackKnapsack
Knapsack
oupc
 
Game
GameGame
Game
oupc
 
Four op
Four opFour op
Four op
oupc
 
Divisor
DivisorDivisor
Divisor
oupc
 
Division
DivisionDivision
Division
oupc
 
Anagram
AnagramAnagram
Anagram
oupc
 
Comment
CommentComment
Comment
oupc
 

More from oupc (8)

Knapsack
KnapsackKnapsack
Knapsack
 
Game
GameGame
Game
 
Four op
Four opFour op
Four op
 
Divisor
DivisorDivisor
Divisor
 
Division
DivisionDivision
Division
 
Anagram
AnagramAnagram
Anagram
 
A
AA
A
 
Comment
CommentComment
Comment
 

Sort

  • 2. 問題概要  配列を値の交換によってソートしたい。  i と j を交換するのに C[i][j] のコストが必要になる。  順列 p をソートするのに必要な最小コスト =: f(p)  f(p) の最大値を求める。
  • 3. 着眼点  f(p) を効率よく求めるのは案外大変 ( 参考 : Silly Sort )  最も愚直にコストを求めるには、 p からソートされた 状態へ Dijkstra を使う。  f(p) を求めるのに N! 程度のコストが必要になり、 全ての p について求めると (N!)^2 で TLE する。  逆に、ソートされた状態からの距離を考えれば Dijkstra を 1 回行うだけでよい。
  • 4. 解法  N! 通りの全ての順列をノードとするグラフを考える。  ソートされた順列を始点として Dijkstra 法などで各 ノードまでの距離を求める。  距離の最大値が答えとなる。
  • 5. グラフとして見る 0, 1, 2 0, 2, 1 1, 0, 2 1, 2, 0 2, 0, 1 2, 1, 0 C[0][1] C[0][2] C[1][2]
  • 6. 実装  各順列までの距離をどのようなデータ構造で持つ か? 1. 連想配列で配列をキーにする 2. 順列をビット列に落とす (3 * 7 bit あれば十分 ) 3. 順列に対する最小完全ハッシュ関数を利用す る ( 変換に N^2 かかるのがネック )  1 や 3 だと実装次第で TLE することもあるようで す。定数が重いとかではなく計算量が増加します。
  • 7. 解答例  宮村 (C++) 95 行 1644 byte  橋本 (Java) 90 行 1800 byte