SlideShare a Scribd company logo
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

More Related Content

Viewers also liked

C : 解説
C : 解説C : 解説
C : 解説
Takumi Yamashita
 
I : Traffic Tree
I : Traffic TreeI : Traffic Tree
I : Traffic Tree
Takumi Yamashita
 
RMQ クエリ処理
RMQ クエリ処理RMQ クエリ処理
グラフネットワーク〜フロー&カット〜
グラフネットワーク〜フロー&カット〜グラフネットワーク〜フロー&カット〜
グラフネットワーク〜フロー&カット〜
HCPC: 北海道大学競技プログラミングサークル
 
Pythonではじめる競技プログラミング
Pythonではじめる競技プログラミングPythonではじめる競技プログラミング
Pythonではじめる競技プログラミング
cocodrips
 
AtCoderに毎回参加したくなる仕組み
AtCoderに毎回参加したくなる仕組みAtCoderに毎回参加したくなる仕組み
AtCoderに毎回参加したくなる仕組み
AtCoder Inc.
 

Viewers also liked (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に毎回参加したくなる仕組み
 

More from Takumi Yamashita

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

More from 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: 解説
 

Recently uploaded

CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
Yuuitirou528 default
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
t m
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
Matsushita Laboratory
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
0207sukipio
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
chiefujita1
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 

Recently uploaded (8)

CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 

RUPC2017:G解説