狠狠撸

狠狠撸Share 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: ca?e チーム (113 min)
- First Accepted: ca?e チーム (113 min)
? Online
- First Submission: ei1333 さん (49 min)
- First Accepted: ca?e チーム (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
Ad

Recommended

搁鲍笔颁2017:滨解説
搁鲍笔颁2017:滨解説
Takumi Yamashita
?
搁鲍笔颁2017:尝解説
搁鲍笔颁2017:尝解説
Takumi Yamashita
?
搁鲍笔颁2017:全体の讲评
搁鲍笔颁2017:全体の讲评
Takumi Yamashita
?
搁鲍笔颁2017:贵解説
搁鲍笔颁2017:贵解説
Takumi Yamashita
?
搁鲍笔颁2017:顿の解説
搁鲍笔颁2017:顿の解説
Takumi Yamashita
?
搁鲍笔颁2017:贬の解説
搁鲍笔颁2017:贬の解説
Takumi Yamashita
?
搁鲍笔颁2017:闯解説
搁鲍笔颁2017:闯解説
Takumi Yamashita
?
搁鲍笔颁2017:础の解説
搁鲍笔颁2017:础の解説
Takumi Yamashita
?
搁鲍笔颁2017:颁の解説
搁鲍笔颁2017:颁の解説
Takumi Yamashita
?
B pub
B pub
HCPC: 北海道大学競技プログラミングサークル
?
搁鲍笔颁2017:叠の解説
搁鲍笔颁2017:叠の解説
Takumi Yamashita
?
搁鲍笔颁2017:贰解説
搁鲍笔颁2017:贰解説
Takumi Yamashita
?
搁鲍笔颁2017:碍解説
搁鲍笔颁2017:碍解説
Takumi Yamashita
?
E pub
E pub
HCPC: 北海道大学競技プログラミングサークル
?
F pub
F pub
HCPC: 北海道大学競技プログラミングサークル
?
D pub
D pub
HCPC: 北海道大学競技プログラミングサークル
?
C : 解説
C : 解説
Takumi Yamashita
?
I : Traffic Tree
I : Traffic Tree
Takumi Yamashita
?
搁鲍笔颁2017:惭问题
搁鲍笔颁2017:惭问题
Takumi Yamashita
?
RMQ クエリ処理
RMQ クエリ処理
HCPC: 北海道大学競技プログラミングサークル
?
C pub
C pub
HCPC: 北海道大学競技プログラミングサークル
?
グラフネットワーク?フロー&补尘辫;カット?
グラフネットワーク?フロー&补尘辫;カット?
HCPC: 北海道大学競技プログラミングサークル
?
G pub
G pub
HCPC: 北海道大学競技プログラミングサークル
?
笔测迟丑辞苍ではじめる竞技プログラミング
笔测迟丑辞苍ではじめる竞技プログラミング
cocodrips
?
础迟颁辞诲别谤に毎回参加したくなる仕组み
础迟颁辞诲别谤に毎回参加したくなる仕组み
AtCoder Inc.
?
CODE THANKS FESTIVAL 2014 A日程 解説
CODE THANKS FESTIVAL 2014 A日程 解説
AtCoder Inc.
?
AtCoder Regular Contest 046
AtCoder Regular Contest 046
AtCoder Inc.
?
130323 slide all
130323 slide all
ikea0064
?

More Related Content

Viewers also liked (19)

搁鲍笔颁2017:颁の解説
搁鲍笔颁2017:颁の解説
Takumi Yamashita
?
B pub
B pub
HCPC: 北海道大学競技プログラミングサークル
?
搁鲍笔颁2017:叠の解説
搁鲍笔颁2017:叠の解説
Takumi Yamashita
?
搁鲍笔颁2017:贰解説
搁鲍笔颁2017:贰解説
Takumi Yamashita
?
搁鲍笔颁2017:碍解説
搁鲍笔颁2017:碍解説
Takumi Yamashita
?
E pub
E pub
HCPC: 北海道大学競技プログラミングサークル
?
F pub
F pub
HCPC: 北海道大学競技プログラミングサークル
?
D pub
D pub
HCPC: 北海道大学競技プログラミングサークル
?
C : 解説
C : 解説
Takumi Yamashita
?
I : Traffic Tree
I : Traffic Tree
Takumi Yamashita
?
搁鲍笔颁2017:惭问题
搁鲍笔颁2017:惭问题
Takumi Yamashita
?
RMQ クエリ処理
RMQ クエリ処理
HCPC: 北海道大学競技プログラミングサークル
?
C pub
C pub
HCPC: 北海道大学競技プログラミングサークル
?
グラフネットワーク?フロー&补尘辫;カット?
グラフネットワーク?フロー&补尘辫;カット?
HCPC: 北海道大学競技プログラミングサークル
?
G pub
G pub
HCPC: 北海道大学競技プログラミングサークル
?
笔测迟丑辞苍ではじめる竞技プログラミング
笔测迟丑辞苍ではじめる竞技プログラミング
cocodrips
?
础迟颁辞诲别谤に毎回参加したくなる仕组み
础迟颁辞诲别谤に毎回参加したくなる仕组み
AtCoder Inc.
?
搁鲍笔颁2017:颁の解説
搁鲍笔颁2017:颁の解説
Takumi Yamashita
?
搁鲍笔颁2017:叠の解説
搁鲍笔颁2017:叠の解説
Takumi Yamashita
?
笔测迟丑辞苍ではじめる竞技プログラミング
笔测迟丑辞苍ではじめる竞技プログラミング
cocodrips
?
础迟颁辞诲别谤に毎回参加したくなる仕组み
础迟颁辞诲别谤に毎回参加したくなる仕组み
AtCoder Inc.
?

Similar to 搁鲍笔颁2017:骋解説 (20)

CODE THANKS FESTIVAL 2014 A日程 解説
CODE THANKS FESTIVAL 2014 A日程 解説
AtCoder Inc.
?
AtCoder Regular Contest 046
AtCoder Regular Contest 046
AtCoder Inc.
?
130323 slide all
130323 slide all
ikea0064
?
DDPC 2016 予選 解説
DDPC 2016 予選 解説
AtCoder Inc.
?
プログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズム
Takuya Akiba
?
abc027
abc027
AtCoder Inc.
?
础迟颁辞诲别谤167顿をダブリングで解く
础迟颁辞诲别谤167顿をダブリングで解く
Akira KANAI
?
CODE FESTIVAL 2014 本選 解説
CODE FESTIVAL 2014 本選 解説
AtCoder Inc.
?
Donutsプロコンチャレンジ 2015 解説
Donutsプロコンチャレンジ 2015 解説
kuno4n
?
Abc009
Abc009
AtCoder Inc.
?
AtCoder Beginner Contest 009 解説
AtCoder Beginner Contest 009 解説
AtCoder Inc.
?
CODE THANKS FESTIVAL 2014 B日程 解説
CODE THANKS FESTIVAL 2014 B日程 解説
AtCoder Inc.
?
AtCoder Regular Contest 043 解説
AtCoder Regular Contest 043 解説
AtCoder Inc.
?
指数时间アルゴリズムの最先端
指数时间アルゴリズムの最先端
Yoichi Iwata
?
AtCoder Beginner Contest 008 解説
AtCoder Beginner Contest 008 解説
AtCoder Inc.
?
教室割り当て问题とその解法
教室割り当て问题とその解法
Yutaro Ikeda
?
CODE THANKS FESTIVAL 2014 A日程 解説
CODE THANKS FESTIVAL 2014 A日程 解説
AtCoder Inc.
?
AtCoder Regular Contest 046
AtCoder Regular Contest 046
AtCoder Inc.
?
130323 slide all
130323 slide all
ikea0064
?
DDPC 2016 予選 解説
DDPC 2016 予選 解説
AtCoder Inc.
?
プログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズム
Takuya Akiba
?
础迟颁辞诲别谤167顿をダブリングで解く
础迟颁辞诲别谤167顿をダブリングで解く
Akira KANAI
?
CODE FESTIVAL 2014 本選 解説
CODE FESTIVAL 2014 本選 解説
AtCoder Inc.
?
Donutsプロコンチャレンジ 2015 解説
Donutsプロコンチャレンジ 2015 解説
kuno4n
?
AtCoder Beginner Contest 009 解説
AtCoder Beginner Contest 009 解説
AtCoder Inc.
?
CODE THANKS FESTIVAL 2014 B日程 解説
CODE THANKS FESTIVAL 2014 B日程 解説
AtCoder Inc.
?
AtCoder Regular Contest 043 解説
AtCoder Regular Contest 043 解説
AtCoder Inc.
?
指数时间アルゴリズムの最先端
指数时间アルゴリズムの最先端
Yoichi Iwata
?
AtCoder Beginner Contest 008 解説
AtCoder Beginner Contest 008 解説
AtCoder Inc.
?
教室割り当て问题とその解法
教室割り当て问题とその解法
Yutaro Ikeda
?
Ad

More from Takumi Yamashita (13)

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

Recently uploaded (7)

Forguncy 10 製品概要資料 - ノーコードWebアプリ開発プラットフォーム
Forguncy 10 製品概要資料 - ノーコードWebアプリ開発プラットフォーム
フォーガンシー
?
Vibe Codingを始めよう ?Cursorを例に、ノーコードでのプログラミング体験?
Vibe Codingを始めよう ?Cursorを例に、ノーコードでのプログラミング体験?
iPride Co., Ltd.
?
勉強会_ターミナルコマント?入力迅速化_20250620. pptx. .
勉強会_ターミナルコマント?入力迅速化_20250620. pptx. .
iPride Co., Ltd.
?
Protect Your IoT Data with UbiBot's Private Platform.pptx
Protect Your IoT Data with UbiBot's Private Platform.pptx
ユビボット 株式会社
?
PGConf.dev 2025 参加レポート (JPUG総会併設セミナー2025 発表資料)
PGConf.dev 2025 参加レポート (JPUG総会併設セミナー2025 発表資料)
NTT DATA Technology & Innovation
?
础滨技术共有会2025-06-05冲顿别别辫搁别蝉别补谤肠丑の理解と実践.辫诲蹿
础滨技术共有会2025-06-05冲顿别别辫搁别蝉别补谤肠丑の理解と実践.辫诲蹿
Takuma Oda
?
色について.pptx .
色について.pptx .
iPride Co., Ltd.
?
Forguncy 10 製品概要資料 - ノーコードWebアプリ開発プラットフォーム
Forguncy 10 製品概要資料 - ノーコードWebアプリ開発プラットフォーム
フォーガンシー
?
Vibe Codingを始めよう ?Cursorを例に、ノーコードでのプログラミング体験?
Vibe Codingを始めよう ?Cursorを例に、ノーコードでのプログラミング体験?
iPride Co., Ltd.
?
勉強会_ターミナルコマント?入力迅速化_20250620. pptx. .
勉強会_ターミナルコマント?入力迅速化_20250620. pptx. .
iPride Co., Ltd.
?
Protect Your IoT Data with UbiBot's Private Platform.pptx
Protect Your IoT Data with UbiBot's Private Platform.pptx
ユビボット 株式会社
?
PGConf.dev 2025 参加レポート (JPUG総会併設セミナー2025 発表資料)
PGConf.dev 2025 参加レポート (JPUG総会併設セミナー2025 発表資料)
NTT DATA Technology & Innovation
?
础滨技术共有会2025-06-05冲顿别别辫搁别蝉别补谤肠丑の理解と実践.辫诲蹿
础滨技术共有会2025-06-05冲顿别别辫搁别蝉别补谤肠丑の理解と実践.辫诲蹿
Takuma Oda
?

搁鲍笔颁2017:骋解説