SlideShare uma empresa Scribd logo
1 de 34
Baixar para ler offline
Problem G: Chairs
作問: aoba
解説: がっちょ君
1 / 34
問題概要
- 番号1∼NのN個の椅子がある
- ID1∼NのN人がいて、人iは椅子pi に座りたい
- 人々はIDが小さい順に1列に並び、列が前の人か
ら以下の操作を行う
1. 椅子pi が空席の場合はその席に座る
2. 空席ではない場合はpi に1加算して、列の最後
尾に並び直す(Nを超えた場合は1となる)
- 全ての人が座るまでこの操作を繰り返す
- 最終的にそれぞれの椅子に座っている人のIDを
出力する
- 制約: 1 ≤ N ≤ 105, 1 ≤ pi ≤ N
2 / 34
ダメな解法
• 問題文通りにシミュレーション
→ 例えば、全ての初期位置が同じ場合
はN × (N + 1)/2回の操作をすることになり
N = 105
なので間に合わない
3 / 34
ポイント
• 問題を「各椅子に対して人が並んでいる」
と置き換える
4 / 34
解法1
• 累積和 + スタック
5 / 34
解法1
• 問題を置き換えた場合でもどこからどのような
順序で処理を行うかを決める必要がある(円環す
るため)
• 適切な位置を選択することで円環を直線と考え
ることができる
• 適切な位置は次のように決められる
1. 各椅子に対して初期値を-1として、人が並んで
いる場合はその人数だけ加算して累積和を取
る
2. その中で最も値が小さい場所をxとすると、
x + 1が適切な位置となる(x = Nなら1)
6 / 34
解法1
• 適切な位置を選んだらその位置からスタックを
使い、それぞれの椅子に誰が座るかを決定して
いく
• O(N)で解くことができる
※ 工夫すると累積和を使用しなくても解くことが
できる
7 / 34
解法1
8 / 34
N = 8, p = {1, 5, 1, 7, 4, 5, 7, 5}の場合
1 2 3 4 5 6 7 8
1
3
5 2
6
8
4
7
1 -1 -1 0 2 -1 1 -1
解法1
9 / 34
累積和を取る
1 2 3 4 5 6 7 8
1
3
5 2
6
8
4
7
1 0 -1 -1 1 0 1 0
解法1
10 / 34
椅子3が最小 → 椅子4から操作を開始する
1 2 3 4 5 6 7 8
1
3
5 2
6
8
4
7
1 0 -1 -1 1 0 1 0
start→
解法1
11 / 34
1 2 3 4 5 6 7 8
↓
1
3
5 2
6
8
4
7
Stack
解法1
12 / 34
1 2 3 4 5 6 7 8
↓
1
3
2
6
8
4
7
5
Stack
解法1
13 / 34
1 2 3
5
4 5 6 7 8
↓
1
3
2
6
8
4
7
Stack
解法1
14 / 34
1 2 3
5
4 5 6 7 8
↓
1
3
2
6
8
4
7
Stack
解法1
15 / 34
1 2 3
5
4 5 6 7 8
↓
1
3
4
7
2
6
8
Stack
解法1
16 / 34
1 2 3
5
4
2
5 6 7 8
↓
1
3
4
7
6
8
Stack
解法1
17 / 34
1 2 3
5
4
2
5 6 7 8
↓
1
3
4
7
6
8
Stack
解法1
18 / 34
1 2 3
5
4
2
5
6
6 7 8
↓
1
3
4
7
8
Stack
解法1
19 / 34
1 2 3
5
4
2
5
6
6 7 8
↓
1
3
4
7
8
Stack
解法1
20 / 34
1 2 3
5
4
2
5
6
6 7 8
↓
1
3
4
7
8
Stack
解法1
21 / 34
1 2 3
5
4
2
5
6
6
4
7 8
↓
1
3
7
8
Stack
解法1
22 / 34
1 2 3
5
4
2
5
6
6
4
7 8
↓
1
3
7
8
Stack
解法1
23 / 34
1 2 3
5
4
2
5
6
6
4
7
7
8
↓
1
3
8
Stack
解法1
24 / 34
1 2 3
5
4
2
5
6
6
4
7
7
8
↓
1
3
8
Stack
解法1
25 / 34
1 2 3
5
4
2
5
6
6
4
7
7
8
↓
1
3
8
Stack
解法1
26 / 34
1
1 2 3
5
4
2
5
6
6
4
7
7
8
↓
3
8
Stack
解法1
27 / 34
1
1 2 3
5
4
2
5
6
6
4
7
7
8
↓
3
8
Stack
解法1
28 / 34
1
1
3
2 3
5
4
2
5
6
6
4
7
7
8
↓
8
Stack
解法1
29 / 34
1
1
3
2 3
5
4
2
5
6
6
4
7
7
8
↓
8
Stack
解法1
30 / 34
1
1
3
2
8
3
5
4
2
5
6
6
4
7
7
8
↓
Stack
解法2
• シミュレーション
• 列ごとにまとめて動かしていく
• 任意の順序で列を動かしてOK
31 / 34
解法2
• 各列について以下の操作を行う必要がある
1. 最寄りの空席の位置を探す
2. 2つの列をマージする
(一方の列をもう一方の列の後ろに挿入する)
• これらは例えばstd::setとstd::listを組み合わせる
とO(logN)で実現することができる
• N人についてこの操作を行うとO(NlogN)となる
32 / 34
結果
• Onsite
- First Submission: caffe チーム (113 min)
- First Accepted: caffe チーム (113 min)
• Online
- First Submission: ei1333 さん (49 min)
- First Accepted: caffe チーム (113 min)
• Success Rate (Accepted / Submission)
12.00 % (3 / 25)
33 / 34
ジャッジ解
aoba C++ 57行
arrows C++ 49行
arrows Java 38行
gacho C++ 25行
haji C++ 43行
kawa C++ 17行
kzyKT C++ 20行
sate C++ 36行
uku C++ 66行
34 / 34

Mais conteúdo relacionado

Destaque (19)

RUPC2017:Cの解説
RUPC2017:Cの解説RUPC2017:Cの解説
RUPC2017:Cの解説
 
B pub
B pubB pub
B pub
 
RUPC2017:Bの解説
RUPC2017:Bの解説RUPC2017:Bの解説
RUPC2017:Bの解説
 
RUPC2017:E解説
RUPC2017:E解説RUPC2017:E解説
RUPC2017:E解説
 
RUPC2017:K解説
RUPC2017:K解説RUPC2017:K解説
RUPC2017:K解説
 
E pub
E pubE pub
E pub
 
A pub
A pubA pub
A pub
 
F pub
F pubF pub
F pub
 
D pub
D pubD pub
D pub
 
C : 解説
C : 解説C : 解説
C : 解説
 
I : Traffic Tree
I : Traffic TreeI : Traffic Tree
I : Traffic Tree
 
全域木いろいろ
全域木いろいろ全域木いろいろ
全域木いろいろ
 
RUPC2017:M問題
RUPC2017:M問題RUPC2017:M問題
RUPC2017:M問題
 
RMQ クエリ処理
RMQ クエリ処理RMQ クエリ処理
RMQ クエリ処理
 
C pub
C pubC pub
C pub
 
グラフネットワーク〜フロー&カット〜
グラフネットワーク〜フロー&カット〜グラフネットワーク〜フロー&カット〜
グラフネットワーク〜フロー&カット〜
 
G pub
G pubG pub
G pub
 
Pythonではじめる競技プログラミング
Pythonではじめる競技プログラミングPythonではじめる競技プログラミング
Pythonではじめる競技プログラミング
 
AtCoderに毎回参加したくなる仕組み
AtCoderに毎回参加したくなる仕組みAtCoderに毎回参加したくなる仕組み
AtCoderに毎回参加したくなる仕組み
 

Mais de Takumi Yamashita (13)

Deposited Ranges
Deposited RangesDeposited Ranges
Deposited Ranges
 
0: 全体の講評
0: 全体の講評0: 全体の講評
0: 全体の講評
 
M : 解説
M : 解説M : 解説
M : 解説
 
L : 解説
L : 解説L : 解説
L : 解説
 
K : 解説
K : 解説K : 解説
K : 解説
 
J : 解説
J : 解説J : 解説
J : 解説
 
H : hegemony get
H : hegemony getH : hegemony get
H : hegemony get
 
G : 解説
G : 解説G : 解説
G : 解説
 
F : 解説
F : 解説F : 解説
F : 解説
 
E : 解説
E : 解説E : 解説
E : 解説
 
D : 解説
D : 解説D : 解説
D : 解説
 
B potatoes
B  potatoesB  potatoes
B potatoes
 
A: 解説
A: 解説A: 解説
A: 解説
 

Último

LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 

Último (7)

LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 

RUPC2017:G解説