SlideShare a Scribd company logo
AtCoder Regular Contest 042
解説
2015/7/26 1
競技プログラミングを始める前に
• 競技プログラミングをやったことがない人へ
– まずはこっちのスライドを見よう!
– http://www.slideshare.net/chokudai/abc004
2015/7/26 2
©AtCoder Inc. All rights reserved. 3
A問題 掲示板
1. 問題概要
2. 解法
2015/7/26 3
A問題 問題概要
• N個のスレッドがある掲示板がある
• 書き込みがあるとそのスレッドが一番上になる
• 書き込みがM個与えられるので、書き込み後のス
レッドの順番を求めよ
• 制約
1 ≦ N ≦ 105, 1 ≦ M ≦ 105
• 部分点
1 ≦ N ≦ 100, 1 ≦ M ≦ 100
2015/7/26 4
A問題 解法
• 部分点解法
– 毎回の書き込みでスレッドの順番がどうなるかシミュレー
ションする
– O(NM)
• 満点解法
– それぞれのスレッドの最後の書き込みの順でソートする
– 書き込みがなかったスレッドについてはスレッドの番号が
小さい順にソートする
– O(N log N + M)
2015/7/26 5
©AtCoder Inc. All rights reserved. 6
B問題 アリの高橋くん
1. 問題概要
2. 解法
2015/7/26 6
B問題 問題概要
• 凸多角形とその内部の1点が与えられる
• 凸多角形の外周と点との最短距離を求めよ
• 制約
– 3 ≦ (凸多角形の頂点数) ≦ 10
– -100≦(座標)≦ 100
2015/7/26 7
B問題 解法
• 各辺と高橋くんとの距離の最小値を求めればよい
• 線分と点の距離の求め方
– 線分上に垂線の足があるなら垂線の足との距離
– そうでなければ端点との距離
– 今回は垂線の足だけ考えればよい
2015/7/26 8
B問題 解法
• 直線と点の距離の求め方
– 直線上の1点が原点になるように平行移動
– もう1点がX軸の正の方向になるように回転
– 移動後の点のY座標の絶対値が答え
2015/7/26 9
O O
A A A
B
B
BC C
C
B問題 解法
• 複素平面を用いた方法
– 平行移動 : 引き算
– 回転移動 : 割り算して絶対値を掛ける
2015/7/26 10
O O
A A A
B
B
BC C
C
- A ÷B ×|AB|
©AtCoder Inc. All rights reserved. 11
C問題 おやつ
1. 問題概要
2. 解法
2015/7/26 11
C問題 問題概要
• 合計額の上限P,おやつの数N,値段ai,満足度biの01
ナップサック問題
• ただし、選んだおやつのうち、どの1つのおやつがな
かったとしてもP以下になるならOK
• 満足度の和の最大値を求めよ
• 制約
– 1 ≦ P ≦ 5,000, 1 ≦ N ≦ 5,000
– 1≦ ai≦ 100, 1≦ bi≦ 100
• 部分点
– 1 ≦ P ≦ 100, 1 ≦ N ≦ 100
2015/7/26 12
C問題 解法
• 部分点解法
– 選ぶおやつのなかで値段が一番安いものを決める
– その値段以上のおやつでナップサック問題をDPで解く
– 一番安いおやつの選び方がN通り、DPがO(PN)
– 全体でO(PN2)
• 満点解法
– 値段が高い順にソート
– 部分点解法と同じようにDPをする
– DPテーブルを使いまわせるので毎回のDPがO(P)となる
– 全体でO(N log N + PN)
2015/7/26 13
©AtCoder Inc. All rights reserved. 14
D問題 あまり
1. 問題概要
2. 解法
2015/7/26 14
D問題 問題概要
• Xi(A≦i≦B) を P で割った余りの最小値を求めよ
• 制約
– 1<=X<P<231, Pは素数
– 0<=A <=B<231
2015/7/26 15
D問題 解法
• 前提知識
– Xi = Y (mod P)となるiを求める → 離散対数問題
• Baby-step giant-step algorithm
– O(√P)で離散対数問題を解く
X0 → X1 → X2 → … →X√P Y
2015/7/26 16
XP- √P
X√P
X0
:
D問題 解法
• Xi = 1, Xi = 2, Xi = 3, … を順番に解けばいい?
→答えが大きいとTLE
• 答えが大きくなるのは試すi (= B-A+1)が少ない場合
ランダムなので悪質なケースは来ない
B-A+1が小さいとき、答えは平均的にはP/(B-A+1)
• B-A+1が小さいときは愚直に計算すればいい
• Kで切り替えるとして、min(P/K * √P, K)
• K=224くらいで間に合う
2015/7/26 17

More Related Content

PDF
AtCoder Beginner Contest 033 解説
PDF
AtCoder Regular Contest 044 解説
PDF
AtCoder Beginner Contest 017 解説
PDF
AtCoder Regular Contest 025 解説
PDF
AtCoder Beginner Contest 010 解説
PDF
AtCoder Beginner Contest 008 解説
PDF
AtCoder Beginner Contest 025 解説
PDF
AtCoder Beginner Contest 029 解説
AtCoder Beginner Contest 033 解説
AtCoder Regular Contest 044 解説
AtCoder Beginner Contest 017 解説
AtCoder Regular Contest 025 解説
AtCoder Beginner Contest 010 解説
AtCoder Beginner Contest 008 解説
AtCoder Beginner Contest 025 解説
AtCoder Beginner Contest 029 解説

What's hot (20)

PDF
abc032
PDF
abc027
PDF
AtCoder Beginner Contest 018 解説
PDF
AtCoder Regular Contest 037 解説
PDF
AtCoder Regular Contest 020 解説
PDF
AtCoder Regular Contest 039 解説
PDF
AtCoder Beginner Contest 026 解説
PDF
AtCoder Beginner Contest 021 解説
PDF
AtCoder Regular Contest 033 解説
PDF
AtCoder Beginner Contest 013 解説
PDF
Abc009
PPTX
AtCoder Beginner Contest 003 解説
PDF
AtCoder Beginner Contest 006 解説
PDF
AtCoder Regular Contest 045 解説
PDF
AtCoder Regular Contest 032 解説
PDF
AtCoder Beginner Contest 024 解説
PDF
AtCoder Beginner Contest 005 解説
PPTX
AtCoder Beginner Contest 014 解説
PDF
AtCoder Beginner Contest 011 解説
PDF
AtCoder Regular Contest 021 解説
abc032
abc027
AtCoder Beginner Contest 018 解説
AtCoder Regular Contest 037 解説
AtCoder Regular Contest 020 解説
AtCoder Regular Contest 039 解説
AtCoder Beginner Contest 026 解説
AtCoder Beginner Contest 021 解説
AtCoder Regular Contest 033 解説
AtCoder Beginner Contest 013 解説
Abc009
AtCoder Beginner Contest 003 解説
AtCoder Beginner Contest 006 解説
AtCoder Regular Contest 045 解説
AtCoder Regular Contest 032 解説
AtCoder Beginner Contest 024 解説
AtCoder Beginner Contest 005 解説
AtCoder Beginner Contest 014 解説
AtCoder Beginner Contest 011 解説
AtCoder Regular Contest 021 解説
Ad

Viewers also liked (20)

PPTX
AtCoder Regular Contest 029 解説
PDF
AtCoder Regular Contest 043 解説
PPTX
AtCoderに毎回参加したくなる仕組み
PDF
プログラミングコンテストでのデータ構造
PPTX
Atcoder Regular Contest 014 解説
PDF
AtCoder Regular Contest 030 解説
PDF
Arc041
PDF
文字列検索のいろいろ
PDF
指数時間アルゴリズムの最先端
PPTX
AtCoder Beginner Contest 012 解説
PDF
計算量
PDF
最小カットを使って「燃やす埋める問題」を解く
PDF
Snr 2012 ee020344
PDF
חשבון נפש: מצב לימודי המתמטיקה בישראל - 2014
KEY
JavaScript Craftsmanship: Why JavaScript is Worthy of TDD
PPSX
Oscars after - party
PPT
Маркетинг 2015 - основни правила за малкия и среден бизнес
PDF
サーバ構築自動化 On aws sqaleの場合
PDF
Carrot City: The impact of food on the design of cities and buildings - Mark ...
PPTX
Unit 2: NUTRITION
AtCoder Regular Contest 029 解説
AtCoder Regular Contest 043 解説
AtCoderに毎回参加したくなる仕組み
プログラミングコンテストでのデータ構造
Atcoder Regular Contest 014 解説
AtCoder Regular Contest 030 解説
Arc041
文字列検索のいろいろ
指数時間アルゴリズムの最先端
AtCoder Beginner Contest 012 解説
計算量
最小カットを使って「燃やす埋める問題」を解く
Snr 2012 ee020344
חשבון נפש: מצב לימודי המתמטיקה בישראל - 2014
JavaScript Craftsmanship: Why JavaScript is Worthy of TDD
Oscars after - party
Маркетинг 2015 - основни правила за малкия и среден бизнес
サーバ構築自動化 On aws sqaleの場合
Carrot City: The impact of food on the design of cities and buildings - Mark ...
Unit 2: NUTRITION
Ad

Similar to AtCoder Regular Contest 042 解説 (20)

PDF
130323 slide all
PDF
Indeedなう 予選B 解説
PDF
AtCoder Beginner Contest 030 解説
PDF
AtCoder Regular Contest 026 解説
PDF
Code Formula 2014 予選A 解説
PPTX
AtCoder Beginner Contest 034 解説
PPTX
AtCoder を布教しに来ました! 2019 - 04 - 11
PDF
AtCoder Regular Contest 034 解説
PDF
AtCoder Beginner Contest 019 解説
PDF
AtCoder Regular Contest 046
PDF
CODE THANKS FESTIVAL 2014 B日程 解説
PDF
AtCoder Beginner Contest 020 解説
PDF
Donutsプロコンチャレンジ 2015 解説
PDF
AtCoder Regular Contest 018 解説
PDF
実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder)
PDF
AtCoder Regular Contest 027 解説
PDF
U・N・C・O
PDF
AtCoder Beginner Contest 015 解説
PPTX
AtCoder Beginner Contest 002 解説
PPTX
AtCoder Beginner Contest 004 解説
130323 slide all
Indeedなう 予選B 解説
AtCoder Beginner Contest 030 解説
AtCoder Regular Contest 026 解説
Code Formula 2014 予選A 解説
AtCoder Beginner Contest 034 解説
AtCoder を布教しに来ました! 2019 - 04 - 11
AtCoder Regular Contest 034 解説
AtCoder Beginner Contest 019 解説
AtCoder Regular Contest 046
CODE THANKS FESTIVAL 2014 B日程 解説
AtCoder Beginner Contest 020 解説
Donutsプロコンチャレンジ 2015 解説
AtCoder Regular Contest 018 解説
実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder)
AtCoder Regular Contest 027 解説
U・N・C・O
AtCoder Beginner Contest 015 解説
AtCoder Beginner Contest 002 解説
AtCoder Beginner Contest 004 解説

More from AtCoder Inc. (18)

PPTX
TCO2017R1
PDF
Square869120 contest #2
PDF
AtCoder Beginner Contest 035 解説
PDF
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
PDF
Chokudai Contest 001
PDF
AtCoder Regular Contest 049 解説
PDF
AtCoder Regular Contest 048
PDF
MUJINプログラミングチャレンジ2016 解説
PDF
DDPC 2016 予選 解説
PDF
arc047
PDF
CODE FESTIVAL 2015 沖縄ツアー 解説
PDF
abc031
PDF
CODE FESTIVAL 2015 解説
PDF
CODE FESTIVAL 2015 予選B 解説
PDF
CODE FESTIVAL 2015 予選A 解説
PDF
AtCoder Beginner Contest 028 解説
PDF
天下一プログラマーコンテスト2015 予選B 解説
PDF
天下一プログラマーコンテスト2015 予選A E問題 解説
TCO2017R1
Square869120 contest #2
AtCoder Beginner Contest 035 解説
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
Chokudai Contest 001
AtCoder Regular Contest 049 解説
AtCoder Regular Contest 048
MUJINプログラミングチャレンジ2016 解説
DDPC 2016 予選 解説
arc047
CODE FESTIVAL 2015 沖縄ツアー 解説
abc031
CODE FESTIVAL 2015 解説
CODE FESTIVAL 2015 予選B 解説
CODE FESTIVAL 2015 予選A 解説
AtCoder Beginner Contest 028 解説
天下一プログラマーコンテスト2015 予選B 解説
天下一プログラマーコンテスト2015 予選A E問題 解説

AtCoder Regular Contest 042 解説