SlideShare a Scribd company logo
1 of 13
Download to read offline
RUPC2016 2016/03/08
RUPC2016 Day3
D: Complex Oracle
1
原案:井上
解説:井上

問題文:井上
解答:青木・井上
RUPC2016 2016/03/08
問題概要
• 長さNの順列pが隠されている
• 2つの整数 l, r をサーバーに送ると、区間
[l, r]のコンプレックス度を教えてくれる
• コンプレックス度 := | { (i,j) | pi>pj か
つ l≤i<j≤r} |
• 200,000回以内のクエリで隠された順列pを当
てろ
• 制約: 1≤N≤100,000
2
RUPC2016 2016/03/08
問題概要
• 長さNの順列pが隠されている
• 2つの整数 l, r をサーバーに送ると、区間
[l, r]のコンプレックス度を教えてくれる
• コンプレックス度 := | { (i,j) | pi>pj か
つ l≤i<j≤r} |

= 転倒数 (=バブルソートの交換回数)
• 200,000回以内のクエリで隠された順列pを当
てろ
• 制約: 1≤N≤100,000
3
RUPC2016 2016/03/08
解法のアイデア
• inv(l,r) = | { (i,j) | pi>pj かつ l≤i<j≤r} |
とする
• inv(l,r) - inv(l+1, r) から、lより右にpl よ
り小さい値がいくつあるかわかる

→ p[l,N] のみの順列での何番目かがわかる
4
6 4 1 3 5 2
1
2
2 3 1
2番目
RUPC2016 2016/03/08
TLE解法
• p[l,N] のみの順列での何番目かがわかる
• 後ろから更新、p[x]がp[x,N]でk番目なら、
• p[x+1,N]で k≤p[y] であるp[y]を1増やす
• p[x] = k とする
• クエリN-1回、ナイーブに更新するとO(N2)でTLE
5
? ? ? 2 3 1
2
4
2 3 4 1
2番目 +1 +1
RUPC2016 2016/03/08
想定解法
• p[l,N] のみの順列での何番目かがわかる
• 逆に、前から考えると、まだ使ってない数字で

k番目のものを使えばOK
• 平衡二分木やセグメントツリーなどを使ってこ
のクエリをO(logN)で処理して、全体 O(NlogN)
• クエリN-1回
6
4 3 ? ? ? ?
3番目
候補: {1,2,5,6}
4 3 5 ? ? ?
RUPC2016 2016/03/08
セグメントツリーを使う方法
• セグメントツリーについては蟻本等を参照
• k番目の要素をとるため、区間和を管理する
• k<=sumなら左に降る
• 違うなら k = k - sum として右に降る
7
1 0 1 1 0 1 0 0候補: {1,3,4,6}
0121
13
4k=3
RUPC2016 2016/03/08
セグメントツリーを使う方法
• セグメントツリーについては蟻本等を参照
• k番目の要素をとるため、区間和を管理する
• k<=sumなら左に降る
• 違うなら k = k - sum として右に降る
8
1 0 1 1 0 1 0 0候補: {1,3,4,6}
0121
13
4
k=3
RUPC2016 2016/03/08
セグメントツリーを使う方法
• セグメントツリーについては蟻本等を参照
• k番目の要素をとるため、区間和を管理する
• k<=sumなら左に降る
• 違うなら k = k - sum として右に降る
9
1 0 1 1 0 1 0 0候補: {1,3,4,6}
0121
13
4
k=2
RUPC2016 2016/03/08
セグメントツリーを使う方法
• セグメントツリーについては蟻本等を参照
• k番目の要素をとるため、区間和を管理する
• k<=sumなら左に降る
• 違うなら k = k - sum として右に降る
10
1 0 1 1 0 1 0 0候補: {1,3,4,6}
0121
13
4
RUPC2016 2016/03/08
想定解法2
• p[x,N] のみの順列での何番目かがわかる
• 逆方向にも同様のクエリを投げると、p[1,x] での
(降順での) 何番目かがわかる
• x-1個のうちk個が自分より大きい → 自分はx-k
番目
• 左右に自分より小さい要素がそれぞれa,b個

→ 自分は全体でa+b+1番目 → p[x] = a+b+1
• クエリ2N-2回、O(N)
11
? ? ? ? ? ?
前から1番目
RUPC2016 2016/03/08
ジャッジ解
• 青木 (Java, O(N)): 59行 1886B
• 井上 (C++, O(N)): 44行 781B
• 井上 (C++, O(NlogN)): 71行 1308B
12
RUPC2016 2016/03/08
回答状況
• Accept / Submit
• 15 / 47 (31.91%)
• First Acceptance
• onsite: popnow (00:56)
• online: rickytheta (00:33)
13

More Related Content

What's hot

整数格子点上の劣モジュラ被覆に対する高速アルゴリズム
整数格子点上の劣モジュラ被覆に対する高速アルゴリズム整数格子点上の劣モジュラ被覆に対する高速アルゴリズム
整数格子点上の劣モジュラ被覆に対する高速アルゴリズム
Tasuku Soma
 
Rでisomap(多様体学習のはなし)
Rでisomap(多様体学習のはなし)Rでisomap(多様体学習のはなし)
Rでisomap(多様体学習のはなし)
Kohta Ishikawa
 
低ランク行列補完のためのマトロイド理論
低ランク行列補完のためのマトロイド理論低ランク行列補完のためのマトロイド理論
低ランク行列補完のためのマトロイド理論
ryotat
 
Sort
SortSort
Sort
oupc
 

What's hot (20)

整数格子点上の劣モジュラ被覆に対する高速アルゴリズム
整数格子点上の劣モジュラ被覆に対する高速アルゴリズム整数格子点上の劣モジュラ被覆に対する高速アルゴリズム
整数格子点上の劣モジュラ被覆に対する高速アルゴリズム
 
Chainerで流体計算
Chainerで流体計算Chainerで流体計算
Chainerで流体計算
 
Rでisomap(多様体学習のはなし)
Rでisomap(多様体学習のはなし)Rでisomap(多様体学習のはなし)
Rでisomap(多様体学習のはなし)
 
CMSI計算科学技術特論B(10) 大規模MD並列化の技術1
CMSI計算科学技術特論B(10) 大規模MD並列化の技術1CMSI計算科学技術特論B(10) 大規模MD並列化の技術1
CMSI計算科学技術特論B(10) 大規模MD並列化の技術1
 
RMQ クエリ処理
RMQ クエリ処理RMQ クエリ処理
RMQ クエリ処理
 
Icp3.2 takmin
Icp3.2 takminIcp3.2 takmin
Icp3.2 takmin
 
CMSI計算科学技術特論B(12) 大規模量子化学計算(1)
CMSI計算科学技術特論B(12) 大規模量子化学計算(1)CMSI計算科学技術特論B(12) 大規模量子化学計算(1)
CMSI計算科学技術特論B(12) 大規模量子化学計算(1)
 
FeaStNet: Feature-Steered Graph Convolutions for 3D Shape Analysis
FeaStNet: Feature-Steered Graph Convolutions for 3D Shape AnalysisFeaStNet: Feature-Steered Graph Convolutions for 3D Shape Analysis
FeaStNet: Feature-Steered Graph Convolutions for 3D Shape Analysis
 
Snake eats leapfrog (in Japanese)
Snake eats leapfrog (in Japanese)Snake eats leapfrog (in Japanese)
Snake eats leapfrog (in Japanese)
 
CMSI計算科学技術特論B(11) 大規模MD並列化の技術2
CMSI計算科学技術特論B(11) 大規模MD並列化の技術2CMSI計算科学技術特論B(11) 大規模MD並列化の技術2
CMSI計算科学技術特論B(11) 大規模MD並列化の技術2
 
20130626 kawasaki.rb NKT77
20130626 kawasaki.rb NKT7720130626 kawasaki.rb NKT77
20130626 kawasaki.rb NKT77
 
ウェーブレット木の世界
ウェーブレット木の世界ウェーブレット木の世界
ウェーブレット木の世界
 
20140306 ibisml
20140306 ibisml20140306 ibisml
20140306 ibisml
 
[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...
 
低ランク行列補完のためのマトロイド理論
低ランク行列補完のためのマトロイド理論低ランク行列補完のためのマトロイド理論
低ランク行列補完のためのマトロイド理論
 
強化学習の汎用化Ros
強化学習の汎用化Ros強化学習の汎用化Ros
強化学習の汎用化Ros
 
Graph convolution (スペクトルアプローチ)
Graph convolution (スペクトルアプローチ)Graph convolution (スペクトルアプローチ)
Graph convolution (スペクトルアプローチ)
 
Ecma 262 5th Edition を読む #5 第9条
Ecma 262 5th Edition を読む #5 第9条Ecma 262 5th Edition を読む #5 第9条
Ecma 262 5th Edition を読む #5 第9条
 
Coursera machine learning week7: Support Vector Machines
Coursera machine learning week7: Support Vector MachinesCoursera machine learning week7: Support Vector Machines
Coursera machine learning week7: Support Vector Machines
 
Sort
SortSort
Sort
 

Viewers also liked (6)

立命合宿2016Day3:E問題
立命合宿2016Day3:E問題立命合宿2016Day3:E問題
立命合宿2016Day3:E問題
 
Государственные закупки для предпринимателей
Государственные закупки для предпринимателейГосударственные закупки для предпринимателей
Государственные закупки для предпринимателей
 
立命合宿2016Day3:F問題
立命合宿2016Day3:F問題立命合宿2016Day3:F問題
立命合宿2016Day3:F問題
 
立命合宿2016Day3:G問題
立命合宿2016Day3:G問題立命合宿2016Day3:G問題
立命合宿2016Day3:G問題
 
ACPC2016Day3:E問題
ACPC2016Day3:E問題ACPC2016Day3:E問題
ACPC2016Day3:E問題
 
Topological sort
Topological sortTopological sort
Topological sort
 

More from HCPC: 北海道大学競技プログラミングサークル

More from HCPC: 北海道大学競技プログラミングサークル (20)

写像 12 相
写像 12 相写像 12 相
写像 12 相
 
ACPC 2017 Day3 F: 掛け算は楽しい
ACPC 2017 Day3 F: 掛け算は楽しいACPC 2017 Day3 F: 掛け算は楽しい
ACPC 2017 Day3 F: 掛け算は楽しい
 
ACPC 2017 Day3 D: 優柔不断
ACPC 2017 Day3 D: 優柔不断ACPC 2017 Day3 D: 優柔不断
ACPC 2017 Day3 D: 優柔不断
 
ACPC 2019 Day3 G: Restricted DFS
ACPC 2019 Day3 G: Restricted DFSACPC 2019 Day3 G: Restricted DFS
ACPC 2019 Day3 G: Restricted DFS
 
ACPC 2019 Day3 F: 部分文字列分解
ACPC 2019 Day3 F: 部分文字列分解ACPC 2019 Day3 F: 部分文字列分解
ACPC 2019 Day3 F: 部分文字列分解
 
ACPC 2019 Day3 E: 総和の切り取り
ACPC 2019 Day3 E: 総和の切り取りACPC 2019 Day3 E: 総和の切り取り
ACPC 2019 Day3 E: 総和の切り取り
 
ACPC 2019 Day3 B: パフェ
ACPC 2019 Day3 B: パフェACPC 2019 Day3 B: パフェ
ACPC 2019 Day3 B: パフェ
 
ACPC 2019 Day3 A: 間違い探し
ACPC 2019 Day3 A: 間違い探しACPC 2019 Day3 A: 間違い探し
ACPC 2019 Day3 A: 間違い探し
 
HUPC 2019 Day2 G: 木
HUPC 2019 Day2 G: 木HUPC 2019 Day2 G: 木
HUPC 2019 Day2 G: 木
 
HUPC 2019 Day2 E: ジャム
HUPC 2019 Day2 E: ジャムHUPC 2019 Day2 E: ジャム
HUPC 2019 Day2 E: ジャム
 
HUPC 2019 Day2 H: Revenge of UMG
HUPC 2019 Day2 H: Revenge of UMGHUPC 2019 Day2 H: Revenge of UMG
HUPC 2019 Day2 H: Revenge of UMG
 
HUPC 2019 Day2 F: MOD Rush
HUPC 2019 Day2 F: MOD RushHUPC 2019 Day2 F: MOD Rush
HUPC 2019 Day2 F: MOD Rush
 
HUPC 2019 Day2 C: 串刺し
HUPC 2019 Day2 C: 串刺しHUPC 2019 Day2 C: 串刺し
HUPC 2019 Day2 C: 串刺し
 
HUPC 2019 Day1 F: グリッドの番号
HUPC 2019 Day1 F: グリッドの番号HUPC 2019 Day1 F: グリッドの番号
HUPC 2019 Day1 F: グリッドの番号
 
HUPC 2019 Day1 E: 最短経路の復元
HUPC 2019 Day1 E: 最短経路の復元HUPC 2019 Day1 E: 最短経路の復元
HUPC 2019 Day1 E: 最短経路の復元
 
HUPC 2019 Day1 D: 貪欲が最適?
HUPC 2019 Day1 D: 貪欲が最適?HUPC 2019 Day1 D: 貪欲が最適?
HUPC 2019 Day1 D: 貪欲が最適?
 
HUPC 2019 Day1 C: 短絡評価
HUPC 2019 Day1 C: 短絡評価HUPC 2019 Day1 C: 短絡評価
HUPC 2019 Day1 C: 短絡評価
 
HUPC 2019 Day1 B: 自身の 2 倍
HUPC 2019 Day1 B: 自身の 2 倍HUPC 2019 Day1 B: 自身の 2 倍
HUPC 2019 Day1 B: 自身の 2 倍
 
HUPC 2019 Day1 A: four tea
HUPC 2019 Day1 A: four teaHUPC 2019 Day1 A: four tea
HUPC 2019 Day1 A: four tea
 
プログラミングコンテスト基礎テクニック
プログラミングコンテスト基礎テクニックプログラミングコンテスト基礎テクニック
プログラミングコンテスト基礎テクニック
 

Recently uploaded

Recently uploaded (10)

LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 

立命合宿2016Day3:D問題