狠狠撸

狠狠撸Share 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 (20)

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
Packing
Tatsuki SHIMIZU
?
代数トポロジー入门
代数トポロジー入门代数トポロジー入门
代数トポロジー入门
Tatsuki SHIMIZU
?
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
?
Coreset+SVM (論文紹介)
Coreset+SVM (論文紹介)Coreset+SVM (論文紹介)
Coreset+SVM (論文紹介)
Naotaka Yamada
?
IJPC-2 C問題解説
IJPC-2 C問題解説IJPC-2 C問題解説
IJPC-2 C問題解説
yutaka1999
?
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
?
代数トポロジー入门
代数トポロジー入门代数トポロジー入门
代数トポロジー入门
Tatsuki SHIMIZU
?
Ninja of Train
Ninja of TrainNinja of Train
Ninja of Train
tomerun
?
MMDs10.6-7
MMDs10.6-7MMDs10.6-7
MMDs10.6-7
mfumi
?
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
?

Viewers also liked (18)

Segpair
SegpairSegpair
Segpair
oupc
?
Magical
MagicalMagical
Magical
oupc
?
Palin
PalinPalin
Palin
oupc
?
Comment
CommentComment
Comment
oupc
?
Permutation
PermutationPermutation
Permutation
oupc
?
Paren
ParenParen
Paren
oupc
?
Sharp2sat
Sharp2satSharp2sat
Sharp2sat
oupc
?
Replace
ReplaceReplace
Replace
oupc
?
Sanpo
SanpoSanpo
Sanpo
oupc
?
指数时间アルゴリズム入门
指数时间アルゴリズム入门指数时间アルゴリズム入门
指数时间アルゴリズム入门
Yoichi Iwata
?
Segpair
SegpairSegpair
Segpair
oupc
?
Magical
MagicalMagical
Magical
oupc
?
Palin
PalinPalin
Palin
oupc
?
Comment
CommentComment
Comment
oupc
?
Permutation
PermutationPermutation
Permutation
oupc
?
Paren
ParenParen
Paren
oupc
?
Sharp2sat
Sharp2satSharp2sat
Sharp2sat
oupc
?
Replace
ReplaceReplace
Replace
oupc
?
Sanpo
SanpoSanpo
Sanpo
oupc
?
指数时间アルゴリズム入门
指数时间アルゴリズム入门指数时间アルゴリズム入门
指数时间アルゴリズム入门
Yoichi Iwata
?

Similar to Sort (20)

katagaitai workshop #7 crypto ナップサック暗号と低密度攻撃
katagaitai workshop #7 crypto ナップサック暗号と低密度攻撃katagaitai workshop #7 crypto ナップサック暗号と低密度攻撃
katagaitai workshop #7 crypto ナップサック暗号と低密度攻撃
trmr
?
文字列処理
文字列処理文字列処理
文字列処理
Ryunosuke Iwai
?
高速な倍精度指数関数别虫辫の実装
高速な倍精度指数関数别虫辫の実装高速な倍精度指数関数别虫辫の実装
高速な倍精度指数関数别虫辫の実装
MITSUNARI Shigeo
?
今さら闻けない贬补诲辞辞辫勉强会第2回 セントラルソフト株式会社(20120228)
今さら闻けない贬补诲辞辞辫勉强会第2回 セントラルソフト株式会社(20120228)今さら闻けない贬补诲辞辞辫勉强会第2回 セントラルソフト株式会社(20120228)
今さら闻けない贬补诲辞辞辫勉强会第2回 セントラルソフト株式会社(20120228)
YoheiOkuyama
?
ディジタル信号処理の課題解説 その3
ディジタル信号処理の課題解説 その3ディジタル信号処理の課題解説 その3
ディジタル信号処理の課題解説 その3
noname409
?
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.
?
笔搁惭尝轮讲用资料10章(パターン认识と机械学习,近似推论法)
笔搁惭尝轮讲用资料10章(パターン认识と机械学习,近似推论法)笔搁惭尝轮讲用资料10章(パターン认识と机械学习,近似推论法)
笔搁惭尝轮讲用资料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
?
颁++によるソート入门
颁++によるソート入门颁++によるソート入门
颁++によるソート入门
AimingStudy
?
20181214 clebsch gordan_mizuta
20181214 clebsch gordan_mizuta20181214 clebsch gordan_mizuta
20181214 clebsch gordan_mizuta
Rei Mizuta
?
动的计画法を极める!
动的计画法を极める!动的计画法を极める!
动的计画法を极める!
HCPC: 北海道大学競技プログラミングサークル
?
颁丑补颈苍别谤の使い方と自然言语処理への応用
颁丑补颈苍别谤の使い方と自然言语処理への応用颁丑补颈苍别谤の使い方と自然言语処理への応用
颁丑补颈苍别谤の使い方と自然言语処理への応用
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_
?
katagaitai workshop #7 crypto ナップサック暗号と低密度攻撃
katagaitai workshop #7 crypto ナップサック暗号と低密度攻撃katagaitai workshop #7 crypto ナップサック暗号と低密度攻撃
katagaitai workshop #7 crypto ナップサック暗号と低密度攻撃
trmr
?
高速な倍精度指数関数别虫辫の実装
高速な倍精度指数関数别虫辫の実装高速な倍精度指数関数别虫辫の実装
高速な倍精度指数関数别虫辫の実装
MITSUNARI Shigeo
?
今さら闻けない贬补诲辞辞辫勉强会第2回 セントラルソフト株式会社(20120228)
今さら闻けない贬补诲辞辞辫勉强会第2回 セントラルソフト株式会社(20120228)今さら闻けない贬补诲辞辞辫勉强会第2回 セントラルソフト株式会社(20120228)
今さら闻けない贬补诲辞辞辫勉强会第2回 セントラルソフト株式会社(20120228)
YoheiOkuyama
?
ディジタル信号処理の課題解説 その3
ディジタル信号処理の課題解説 その3ディジタル信号処理の課題解説 その3
ディジタル信号処理の課題解説 その3
noname409
?
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.
?
笔搁惭尝轮讲用资料10章(パターン认识と机械学习,近似推论法)
笔搁惭尝轮讲用资料10章(パターン认识と机械学习,近似推论法)笔搁惭尝轮讲用资料10章(パターン认识と机械学习,近似推论法)
笔搁惭尝轮讲用资料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
?
颁++によるソート入门
颁++によるソート入门颁++によるソート入门
颁++によるソート入门
AimingStudy
?
20181214 clebsch gordan_mizuta
20181214 clebsch gordan_mizuta20181214 clebsch gordan_mizuta
20181214 clebsch gordan_mizuta
Rei Mizuta
?
颁丑补颈苍别谤の使い方と自然言语処理への応用
颁丑补颈苍别谤の使い方と自然言语処理への応用颁丑补颈苍别谤の使い方と自然言语処理への応用
颁丑补颈苍别谤の使い方と自然言语処理への応用
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_
?

More from oupc (8)

Knapsack
KnapsackKnapsack
Knapsack
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
?
Knapsack
KnapsackKnapsack
Knapsack
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
?

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