Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
AI
Uploaded by
AtCoder Inc.
14,990 views
abc027
AtCoder Beginner Contest 027 解説
Education
◦
Read more
4
Save
Share
Embed
Embed presentation
Download
Downloaded 29 times
1
/ 37
2
/ 37
3
/ 37
4
/ 37
5
/ 37
6
/ 37
7
/ 37
8
/ 37
9
/ 37
10
/ 37
11
/ 37
12
/ 37
13
/ 37
14
/ 37
15
/ 37
16
/ 37
17
/ 37
18
/ 37
19
/ 37
20
/ 37
21
/ 37
22
/ 37
23
/ 37
24
/ 37
25
/ 37
26
/ 37
27
/ 37
28
/ 37
29
/ 37
30
/ 37
31
/ 37
32
/ 37
33
/ 37
34
/ 37
35
/ 37
36
/ 37
37
/ 37
More Related Content
PDF
AtCoder Beginner Contest 035 解説
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 011 解説
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 019 解説
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 017 解説
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 024 解説
by
AtCoder Inc.
PDF
abc031
by
AtCoder Inc.
PDF
AtCoder Regular Contest 042 解説
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 016 解説
by
AtCoder Inc.
AtCoder Beginner Contest 035 解説
by
AtCoder Inc.
AtCoder Beginner Contest 011 解説
by
AtCoder Inc.
AtCoder Beginner Contest 019 解説
by
AtCoder Inc.
AtCoder Beginner Contest 017 解説
by
AtCoder Inc.
AtCoder Beginner Contest 024 解説
by
AtCoder Inc.
abc031
by
AtCoder Inc.
AtCoder Regular Contest 042 解説
by
AtCoder Inc.
AtCoder Beginner Contest 016 解説
by
AtCoder Inc.
What's hot
PDF
AtCoder Regular Contest 033 解説
by
AtCoder Inc.
PDF
AtCoder Regular Contest 046
by
AtCoder Inc.
PPTX
CODE FESTIVAL 2014 本選 解説
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 010 解説
by
AtCoder Inc.
PPTX
AtCoder Beginner Contest 004 解説
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 006 解説
by
AtCoder Inc.
PPTX
AtCoder Beginner Contest 012 解説
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 013 解説
by
AtCoder Inc.
PDF
AtCoder Regular Contest 037 解説
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 021 解説
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 028 解説
by
AtCoder Inc.
PPTX
ABC001 解説
by
AtCoder Inc.
PDF
AtCoder Regular Contest 049 解説
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 008 解説
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 015 解説
by
AtCoder Inc.
PPTX
AtCoder Beginner Contest 003 解説
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 030 解説
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 022 解説
by
AtCoder Inc.
PDF
AtCoder Regular Contest 039 解説
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 026 解説
by
AtCoder Inc.
AtCoder Regular Contest 033 解説
by
AtCoder Inc.
AtCoder Regular Contest 046
by
AtCoder Inc.
CODE FESTIVAL 2014 本選 解説
by
AtCoder Inc.
AtCoder Beginner Contest 010 解説
by
AtCoder Inc.
AtCoder Beginner Contest 004 解説
by
AtCoder Inc.
AtCoder Beginner Contest 006 解説
by
AtCoder Inc.
AtCoder Beginner Contest 012 解説
by
AtCoder Inc.
AtCoder Beginner Contest 013 解説
by
AtCoder Inc.
AtCoder Regular Contest 037 解説
by
AtCoder Inc.
AtCoder Beginner Contest 021 解説
by
AtCoder Inc.
AtCoder Beginner Contest 028 解説
by
AtCoder Inc.
ABC001 解説
by
AtCoder Inc.
AtCoder Regular Contest 049 解説
by
AtCoder Inc.
AtCoder Beginner Contest 008 解説
by
AtCoder Inc.
AtCoder Beginner Contest 015 解説
by
AtCoder Inc.
AtCoder Beginner Contest 003 解説
by
AtCoder Inc.
AtCoder Beginner Contest 030 解説
by
AtCoder Inc.
AtCoder Beginner Contest 022 解説
by
AtCoder Inc.
AtCoder Regular Contest 039 解説
by
AtCoder Inc.
AtCoder Beginner Contest 026 解説
by
AtCoder Inc.
Similar to abc027
PDF
AtCoder Regular Contest 043 解説
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 020 解説
by
AtCoder Inc.
PDF
プログラミングコンテストでの乱択アルゴリズム
by
Takuya Akiba
PDF
プログラミングコンテストでのデータ構造
by
Takuya Akiba
PDF
区間分割の仕方を最適化する動的計画法 (JOI 2021 夏季セミナー)
by
Kensuke Otsuki
PDF
「現実世界に活かす数学」 (麻布高等学校、教養総合、数学講義 5 回目)
by
Kensuke Otsuki
PDF
競プロは人生の役に立つ!
by
Kensuke Otsuki
PPTX
NUPSC招待講演:アルゴリズムで広がる世界
by
Kentaro Imajo
PDF
虫食算を作るアルゴリズム 公表Ver
by
Kensuke Otsuki
PDF
Sec15 dynamic programming
by
Keisuke OTAKI
PDF
CODE THANKS FESTIVAL 2014 A日程 解説
by
AtCoder Inc.
PDF
JOISP2013 Day3 Cake
by
__m3n
PDF
DDPC 2016 予選 解説
by
AtCoder Inc.
PDF
AtCoder Regular Contest 017
by
AtCoder Inc.
PDF
130323 slide all
by
ikea0064
PDF
WUPC2012
by
Dai Hamada
PPTX
Arc 010 d
by
Yuma Inoue
PDF
JOI春季ステップアップセミナー 2021 講義スライド
by
Kensuke Otsuki
PDF
Sort
by
oupc
PDF
コンピュータの整列処理で正解との距離は単調に減少するか?
by
yamahige
AtCoder Regular Contest 043 解説
by
AtCoder Inc.
AtCoder Beginner Contest 020 解説
by
AtCoder Inc.
プログラミングコンテストでの乱択アルゴリズム
by
Takuya Akiba
プログラミングコンテストでのデータ構造
by
Takuya Akiba
区間分割の仕方を最適化する動的計画法 (JOI 2021 夏季セミナー)
by
Kensuke Otsuki
「現実世界に活かす数学」 (麻布高等学校、教養総合、数学講義 5 回目)
by
Kensuke Otsuki
競プロは人生の役に立つ!
by
Kensuke Otsuki
NUPSC招待講演:アルゴリズムで広がる世界
by
Kentaro Imajo
虫食算を作るアルゴリズム 公表Ver
by
Kensuke Otsuki
Sec15 dynamic programming
by
Keisuke OTAKI
CODE THANKS FESTIVAL 2014 A日程 解説
by
AtCoder Inc.
JOISP2013 Day3 Cake
by
__m3n
DDPC 2016 予選 解説
by
AtCoder Inc.
AtCoder Regular Contest 017
by
AtCoder Inc.
130323 slide all
by
ikea0064
WUPC2012
by
Dai Hamada
Arc 010 d
by
Yuma Inoue
JOI春季ステップアップセミナー 2021 講義スライド
by
Kensuke Otsuki
Sort
by
oupc
コンピュータの整列処理で正解との距離は単調に減少するか?
by
yamahige
More from AtCoder Inc.
PDF
Square869120 contest #2
by
AtCoder Inc.
PDF
AtCoder Regular Contest 045 解説
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 029 解説
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 033 解説
by
AtCoder Inc.
PDF
AtCoder Regular Contest 048
by
AtCoder Inc.
PPTX
AtCoder Beginner Contest 034 解説
by
AtCoder Inc.
PDF
CODE FESTIVAL 2015 予選A 解説
by
AtCoder Inc.
PDF
CODE FESTIVAL 2015 解説
by
AtCoder Inc.
PDF
arc047
by
AtCoder Inc.
PPTX
AtCoderに毎回参加したくなる仕組み
by
AtCoder Inc.
PDF
Chokudai Contest 001
by
AtCoder Inc.
PDF
天下一プログラマーコンテスト2015 予選A E問題 解説
by
AtCoder Inc.
PDF
天下一プログラマーコンテスト2015 予選B 解説
by
AtCoder Inc.
PDF
MUJINプログラミングチャレンジ2016 解説
by
AtCoder Inc.
PDF
CODE FESTIVAL 2015 沖縄ツアー 解説
by
AtCoder Inc.
PDF
AtCoder Regular Contest 044 解説
by
AtCoder Inc.
PDF
CODE FESTIVAL 2015 予選B 解説
by
AtCoder Inc.
PDF
abc032
by
AtCoder Inc.
PDF
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
by
AtCoder Inc.
PPTX
TCO2017R1
by
AtCoder Inc.
Square869120 contest #2
by
AtCoder Inc.
AtCoder Regular Contest 045 解説
by
AtCoder Inc.
AtCoder Beginner Contest 029 解説
by
AtCoder Inc.
AtCoder Beginner Contest 033 解説
by
AtCoder Inc.
AtCoder Regular Contest 048
by
AtCoder Inc.
AtCoder Beginner Contest 034 解説
by
AtCoder Inc.
CODE FESTIVAL 2015 予選A 解説
by
AtCoder Inc.
CODE FESTIVAL 2015 解説
by
AtCoder Inc.
arc047
by
AtCoder Inc.
AtCoderに毎回参加したくなる仕組み
by
AtCoder Inc.
Chokudai Contest 001
by
AtCoder Inc.
天下一プログラマーコンテスト2015 予選A E問題 解説
by
AtCoder Inc.
天下一プログラマーコンテスト2015 予選B 解説
by
AtCoder Inc.
MUJINプログラミングチャレンジ2016 解説
by
AtCoder Inc.
CODE FESTIVAL 2015 沖縄ツアー 解説
by
AtCoder Inc.
AtCoder Regular Contest 044 解説
by
AtCoder Inc.
CODE FESTIVAL 2015 予選B 解説
by
AtCoder Inc.
abc032
by
AtCoder Inc.
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
by
AtCoder Inc.
TCO2017R1
by
AtCoder Inc.
abc027
1.
ABC #027 解説 解説スライド担当
: @sugim48
2.
問題 A –
長方形
3.
問題概要 • ある長方形(正方形も含む)の 3
つの辺の長さが与えられる。残り 1 つの辺の長さを求めよ。 3 ? 4 4 5 ? 5 5
4.
考察 • 向かい合う辺の長さは等しい。 3 ? 4 4 5
? 5 5
5.
解法 • 与えられた 3
つの数のうち、等しい組を見つけたら、余った数がその まま答えになる。 4 3 4 𝑎𝑛𝑠 = 5 5 5 = 𝑎𝑛𝑠
6.
解答例 (C++) int x,
y, z; cin >> x >> y >> z; int ans; if (x == y) ans = z; if (y == z) ans = x; if (z == x) ans = y; cout << ans << endl;
7.
問題 B –
島と橋
8.
問題概要 • 𝑁 個の島が横一列に並んでいる。左から
𝑖 番目の島には 𝑎𝑖 人の住 人が住んでいる。 • 隣り合う島の間に橋を架け、住人を移動させることができる。 • すべての島に同じ人数の住人が住むようにできるか? また、最小で 何本の橋を架ければよいか? • 2 ≤ 𝑁 ≤ 100 • 0 ≤ 𝑎𝑖 ≤ 100
9.
例
10.
例
11.
例
12.
解法 • まず、 𝑖=1 𝑁 𝑎𝑖
が 𝑁 で割り切れなければ、不可能である。 • 割り切れるならば、それぞれの島に 1 𝑁 𝑖=1 𝑁 𝑎𝑖 人ずつ住むことになる。
13.
解法 • 隣り合う島の間ごとに橋が必要か判定していく。 • 下図の橋は必要か?
橋の左側が 1 人、橋の右側が 4 人になって ほしいので、橋を左から右へ 1 人渡ることになる。 → 必要
14.
解法 • 下図の橋は必要か? 橋の左側が
2 人、橋の右側が 3 人になって ほしいが、はじめからそうなっている。 → 必要ではない
15.
解法 • このようにして、隣り合う島の間ごとに橋が必要か判定し、必要と判 定された橋の本数を答えればよい。
16.
問題 C –
倍々ゲーム
17.
問題概要 • A と
B が二人ゲームで勝負する。 • 自然数 𝑁 が与えられる。𝑥 = 1 に初期化する。 • A → B → A → … の順に次の操作を行う。 𝑥 を 2𝑥 または 2𝑥 + 1 に置き換える。 • 𝑥 > 𝑁 にした人が負け。 • どちらかが勝つか求めよ。 • 1 ≤ 𝑁 ≤ 1018
18.
• A の操作を赤、B
の操作を青で表すと、図のように 𝑥 が変化する。 1098 131211 1514 4 5 6 7 2 3 1
19.
• 例えば 𝑁
= 5 のとき、OK の整数と NG の整数はこのように分離され る。 1098 131211 1514 4 5 6 7 2 3 1
20.
• 境界線をまたぐ操作だけに注目すると、A の操作は左に、B
の操作 は右に偏っている。 1098 131211 1514 4 5 6 7 2 3 1
21.
• 境界線をまたぐと負けてしまうので、A はできるだけ右に、B
はできる だけ左に行きたがることが分かる。 1098 131211 1514 4 5 6 7 2 3 1
22.
• これを実際にシミュレートすると B
が負けると判定できる。 1098 131211 1514 4 5 6 7 2 3 1
23.
• 別の例として 𝑁
= 10 のとき、OK の整数と NG の整数はこのように 分離される。 1098 131211 1514 4 5 6 7 2 3 1
24.
• 境界線をまたぐ操作だけに注目すると、A の操作は右に、B
の操作 は左に偏っている。 1098 131211 1514 4 5 6 7 2 3 1
25.
• 境界線をまたぐと負けてしまうので、A はできるだけ左に、B
はできる だけ右に行きたがることが分かる。 1098 131211 1514 4 5 6 7 2 3 1
26.
• これを実際にシミュレートすると B
が負けると判定できる。 1098 131211 1514 4 5 6 7 2 3 1
27.
解法 • 𝑁 の深さの偶奇に応じて、A
と B の戦略が決まる。 • A と B の戦略を実際にシミュレートして、どちらかが勝つか判定する。 • 𝑁 の深さは次のようにして 𝑂(𝑙𝑜𝑔𝑁) 時間で計算できる。 int depth = 0; for (long long n = N; n > 0; n /= 2) depth++;
28.
問題 D –
ロボット
29.
問題概要 • 数直線の原点にロボットが置かれている。はじめ、ロボットの幸福度 は 0
である。 • このロボットが命令列 𝑆 を順に実行する。 M : 正か負の向きに距離 1 だけ移動する。 + : 今の座標を 𝑥 とすると、幸福度が +𝑥 だけ変化する。 - : 今の座標を 𝑥 とすると、幸福度が -𝑥 だけ変化する。 • 最終的にロボットは原点に戻っていなければならない。 • 最終的な幸福度の最大値を求めよ。 • 1 ≤ 𝑆 ≤ 105
30.
部分点解法 • 1 ≤
𝑆 ≤ 1,000 と小さい。 → 動的計画法 • 𝑑𝑝 何文字目 座標 ≔ (幸福度の最大値) を埋めていく。 • 𝑑𝑝 |𝑆| 0 が答え。 • 𝑂( 𝑆 2) で間に合う。
31.
満点解法 • 1 ≤
𝑆 ≤ 105 と大きいので、動的計画法では間に合わない。 → もっと速い解法を考える。 • ロボットの正の向きへの移動を > 、負の向きへの移動を < と表すこ とにする。
32.
考察 • >+<<-> という命令列を考える。 •
幸福度の変化量は + ごとに (自分より左の > の個数) - (自分より左の < の個数) - ごとに (自分より左の < の個数) - (自分より左の > の個数) • 見方を変えると > ごとに (自分より右の + の個数) - (自分より右の - の個数) < ごとに (自分より右の - の個数) - (自分より右の + の個数)
33.
考察 • (自分より右の +
の個数) と (自分より右の - の個数) が分かれば、 > または < を選んだときの幸福度の変化量を予言できる! • 例) M--M-M+M+ M - - M - M + M + > −1 +1 +2 +1 < +1 −1 −2 −1
34.
考察 • 最終的な幸福度を最大化したいので、幸福度が増える向きを貪欲に 選んでいけばいいか? → 「最終的にロボットは原点に戻っていなければならない」という条件 を守れない。 M
- - M - M + M + > −1 +1 +2 +1 < +1 −1 −2 −1
35.
考察 • 最終的にロボットが原点に戻るためには、> と
< を同じ回数だけ選ば なければならない。 • この制約下でできるだけ大きいものを選びたい。 M - - M - M + M + > −1 +1 +2 +1 < +1 −1 −2 −1
36.
考察 • この行を昇順にソートすると →
[−1, +1, +1, +2] • 前半分を < に、後ろ半分を > に割り当てる → −1, +1, +1, +2 • +1 + +2 − −1 + +1 = 3 が答え! M - - M - M + M + > −1 +1 +2 +1 < +1 −1 −2 −1
37.
解法 • 命令列 𝑆
の各 M について、 (自分より右の + の個数) - (自分より右の - の個数) を計算し、 配列 𝐴 に格納する。 • 𝐴 を昇順にソートする。 • (𝐴 の後ろ半分の総和) – (𝐴 の前半分の総和) が答え。 • 𝑂( 𝑆 log 𝑆 ) で間に合う。 • なお、バケツソートを用いると 𝑂( 𝑆 )
Download