SlideShare a Scribd company logo
1 of 22
Download to read offline
Code Formula 2014 予選A 解説 
AtCoder株式会社 代表取締役 
高橋 直大 
2014/8/20 
1
©AtCoder Inc. All rights reserved. 
2 
A問題 立方数 
1.問題概要 
2.アルゴリズム 
2014/8/20
A問題 問題概要 
•整数Nが与えられる 
•Nが立方数かどうかを判定しなさい 
•制約 
•1 ≦ N ≦ 1,000,000 
2014/8/20 
3
A問題 アルゴリズム 
•方針1 
–Nの1/3乗を求め、整数になっているかどうかを判定する 
•整数になっているかは難しいので、最も近い整数に近似し、その 整数を3乗した数がNになっているのか判定するのが良い。 
•直接求めることが可能だが、誤差に注意する必要あり。 
•方針2 
–1から100までの全ての数を3乗し、Nが存在するかどうか を判定する 
•Nが100万以下ということは、Nの三乗根は100以下であることを利 用する 
•こちらの方が確実 
2014/8/20 
4
©AtCoder Inc. All rights reserved. 
5 
B問題 ボウリングゲーム 
1.問題概要 
2.アルゴリズム 
2014/8/20
B問題 問題概要 
•ボウリングで倒したピンが、番号で与えられる 
•グラフィカルな形式に変換しなさい 
2014/8/20 
6
B問題 アルゴリズム 
•長さ10の配列を用意する 
–それぞれに0を入れておく 
•1投目に倒したピンの番号に対応する配列に1を入 れる 
•2投目に倒したピンの番号に対応する配列に2を入 れる 
•それぞれのピンの場所に対して、配列の番号に合 わせた文字を出力する 
2014/8/20 
7
B問題 アルゴリズム 
•よくある間違い 
–末尾改行を入れていない 
•A問題と同じく、末尾改行が必須となります。 
•フォーマットを整える問題なので、フォーマットは統一しましょう。 
–出力順序を間違えている 
2014/8/20 
8
©AtCoder Inc. All rights reserved. 
9 
C問題 決勝進出者 
1.問題概要 
2.アルゴリズム 
2014/8/20
C問題 問題概要 
•N = 4, K = 5の時 
–最初の段階で、確定するのは以下の5人 
2014/8/20 
10 
予選A 
予選B 
予選C 
予選D
C問題 問題概要 
•N = 4, K = 5の時 
–最初の段階で、確定するのは以下の5人 
–予選Aの結果が出ても同じ 
2014/8/20 
11 
予選A 
予選B 
予選C 
予選D 
1 
2 
3 
4 
5
C問題 問題概要 
•N = 4, K = 5の時 
–最初の段階で、確定するのは以下の5人 
–予選B以降は、既に通過した人の分を先に回す必要があ る 
•該当する緑のマスが、2が被っているので、水色のマスが新規に 通過枠となる。 
2014/8/20 
12 
予選A 
予選B 
予選C 
予選D 
1 
2 
2 
1 
3 
3 
4 
4 
5 
5
C問題 問題概要 
•N = 4, K = 5の時 
–最初の段階で、確定するのは以下の5人 
–予選B以降は、既に通過した人の分を先に回す必要があ る 
•該当する緑のマスが、2が被っているので、水色のマスが新規に 通過枠となる。が、この枠も被っているので、次の通過枠に。 
2014/8/20 
13 
予選A 
予選B 
予選C 
予選D 
1 
2 
2 
1 
3 
3 
4 
4 
5 
5
C問題 問題概要 
•N = 4, K = 5の時 
–最初の段階で、確定するのは以下の5人 
–予選B以降は、既に通過した人の分を先に回す必要があ る 
•ここまで通過枠を動かした段階で、もう重複している人はいない ため、予選Bで通過が確定していく人はいない。 
2014/8/20 
14 
予選A 
予選B 
予選C 
予選D 
1 
2 
2 
1 
3 
3 
4 
4 
5 
5
C問題 問題概要 
•N = 4, K = 5の時 
–最初の段階で、確定するのは以下の5人 
–予選B以降は、既に通過した人の分を先に回す必要があ る 
•予選Cでは以下のようになる。 
2014/8/20 
15 
予選A 
予選B 
予選C 
予選D 
1 
2 
1 
2 
1 
2 
3 
3 
3 
4 
4 
4 
5 
5 
5
C問題 問題概要 
•N = 4, K = 5の時 
–最初の段階で、確定するのは以下の5人 
–予選B以降は、既に通過した人の分を先に回す必要があ る 
•予選Dでは以下のようになる。 
–説明の都合でサンプルとは少し違います。 
2014/8/20 
16 
予選A 
予選B 
予選C 
予選D 
1 
2 
1 
2 
2 
1 
2 
1 
3 
3 
3 
3 
4 
4 
4 
5 
5 
5 
5 
4
C問題 アルゴリズム 
•注意点 
–実装に混乱しないようにしよう! 
•実装するべきものはそんなに多くない! 
–通過枠を1つずつ確認する処理 
–通過枠を1つ増やす処理 
»増やした時、既に順位が確定していれば、そこを確認する処理も必要 
–制限時間に気を付けよう! 
•通過枠を毎回頭から確認していくと、制限時間に間に合いません 
–今どこまでが通過枠になっているかを保持しておく 
2014/8/20 
17
©AtCoder Inc. All rights reserved. 
18 
D問題 無刻印キーボード 
1.問題概要 
2.アルゴリズム 
2014/8/20
D問題 問題概要 
•キートップの書かれていないキーボードが存在する 
•文章を打ちたいが、キーを一部しか覚えていない 
•解らない際は、覚えていないキーの中からランダム に打ち、間違えた場合は消す 
•ある文章を打ちたい時に、キーを打つ必要のある回 数の期待値を出力せよ 
•制約 
•文字数≦50, 文字種≦36 
2014/8/20 
19
D問題 アルゴリズム 
•純粋な探索は到底間に合わない。 
•動的計画法も難しい 
–キーの種類は36種類 
–どのキーが解っているかを記憶するには2^36通り覚える 必要がある 
•そこで、何か工夫する必要がある。 
2014/8/20 
20
D問題 アルゴリズム 
•各キーについて注目する 
–正しいタイミングで打つ必要がある回数は、打ちたい文章 の出現文字数と同じ 
–つまり、間違ったタイミングで打ってしまう回数の期待値を 求めれば良い 
•各文字について、間違えるとしても、間違える回数は高々1回 
–その場合、文字を消す処理も必要なので、打つ回数は2回増える 
•間違える確率は、打たれるべき文字の前に、場所が不明な文字 が何種類あるかで決まる。 
–例えば、”abc”と打ちたい時、’c’に着目すると、’a’と打ちたい時にcと 打ってしまうパターンや、’b’と打ちたい時に’c’に打ってしまうパター ンが存在し、それらを避けることが可能な確率は、’a’および’b’が’c’ より先に見つかる確率であり、これは1/3である。 
–つまり、間違えない確率は、1/(手前にある不明な種類数+1)である。 
»出現しない文字も同様であることに注意 
2014/8/20 
21
D問題 アルゴリズム 
•注意点 
–動的計画法で解く場合も、残り文字数に着目すれば解け なくはない。 
•だが、単純に計算した方が実装はずっとシンプルになる 
–文字数の制約が50文字までだが、もちろん10万文字など でも解ける 
•制約に騙されないように! 
2014/8/20 
22

More Related Content

What's hot

AtCoder Regular Contest 033 解説
AtCoder Regular Contest 033 解説AtCoder Regular Contest 033 解説
AtCoder Regular Contest 033 解説AtCoder Inc.
 
AtCoder Regular Contest 035 解説
AtCoder Regular Contest 035 解説AtCoder Regular Contest 035 解説
AtCoder Regular Contest 035 解説AtCoder Inc.
 
AtCoder Regular Contest 042 解説
AtCoder Regular Contest 042 解説AtCoder Regular Contest 042 解説
AtCoder Regular Contest 042 解説AtCoder Inc.
 
AtCoder Beginner Contest 002 解説
AtCoder Beginner Contest 002 解説AtCoder Beginner Contest 002 解説
AtCoder Beginner Contest 002 解説AtCoder Inc.
 
AtCoder Beginner Contest 006 解説
AtCoder Beginner Contest 006 解説AtCoder Beginner Contest 006 解説
AtCoder Beginner Contest 006 解説AtCoder Inc.
 
AtCoder Regular Contest 030 解説
AtCoder Regular Contest 030 解説AtCoder Regular Contest 030 解説
AtCoder Regular Contest 030 解説AtCoder Inc.
 
CODE FESTIVAL 2014 本選 解説
CODE FESTIVAL 2014 本選 解説CODE FESTIVAL 2014 本選 解説
CODE FESTIVAL 2014 本選 解説AtCoder Inc.
 
AtCoder Beginner Contest 034 解説
AtCoder Beginner Contest 034 解説AtCoder Beginner Contest 034 解説
AtCoder Beginner Contest 034 解説AtCoder Inc.
 
AtCoder Beginner Contest 004 解説
AtCoder Beginner Contest 004 解説AtCoder Beginner Contest 004 解説
AtCoder Beginner Contest 004 解説AtCoder Inc.
 
AtCoder Beginner Contest 029 解説
AtCoder Beginner Contest 029 解説AtCoder Beginner Contest 029 解説
AtCoder Beginner Contest 029 解説AtCoder Inc.
 
最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解く最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解くshindannin
 
AtCoder Regular Contest 048
AtCoder Regular Contest 048AtCoder Regular Contest 048
AtCoder Regular Contest 048AtCoder Inc.
 
AtCoder Beginner Contest 030 解説
AtCoder Beginner Contest 030 解説AtCoder Beginner Contest 030 解説
AtCoder Beginner Contest 030 解説AtCoder Inc.
 
AtCoder Beginner Contest 035 解説
AtCoder Beginner Contest 035 解説AtCoder Beginner Contest 035 解説
AtCoder Beginner Contest 035 解説AtCoder Inc.
 
At coder regular contest 013 解説
At coder regular contest 013 解説At coder regular contest 013 解説
At coder regular contest 013 解説光喜 濱屋
 

What's hot (20)

RMQ クエリ処理
RMQ クエリ処理RMQ クエリ処理
RMQ クエリ処理
 
AtCoder Regular Contest 033 解説
AtCoder Regular Contest 033 解説AtCoder Regular Contest 033 解説
AtCoder Regular Contest 033 解説
 
AtCoder Regular Contest 035 解説
AtCoder Regular Contest 035 解説AtCoder Regular Contest 035 解説
AtCoder Regular Contest 035 解説
 
AtCoder Regular Contest 042 解説
AtCoder Regular Contest 042 解説AtCoder Regular Contest 042 解説
AtCoder Regular Contest 042 解説
 
AtCoder Beginner Contest 002 解説
AtCoder Beginner Contest 002 解説AtCoder Beginner Contest 002 解説
AtCoder Beginner Contest 002 解説
 
AtCoder Beginner Contest 006 解説
AtCoder Beginner Contest 006 解説AtCoder Beginner Contest 006 解説
AtCoder Beginner Contest 006 解説
 
AtCoder Regular Contest 030 解説
AtCoder Regular Contest 030 解説AtCoder Regular Contest 030 解説
AtCoder Regular Contest 030 解説
 
CODE FESTIVAL 2014 本選 解説
CODE FESTIVAL 2014 本選 解説CODE FESTIVAL 2014 本選 解説
CODE FESTIVAL 2014 本選 解説
 
AtCoder Beginner Contest 034 解説
AtCoder Beginner Contest 034 解説AtCoder Beginner Contest 034 解説
AtCoder Beginner Contest 034 解説
 
双対性
双対性双対性
双対性
 
Abc009
Abc009Abc009
Abc009
 
最大流 (max flow)
最大流 (max flow)最大流 (max flow)
最大流 (max flow)
 
Chokudai search
Chokudai searchChokudai search
Chokudai search
 
AtCoder Beginner Contest 004 解説
AtCoder Beginner Contest 004 解説AtCoder Beginner Contest 004 解説
AtCoder Beginner Contest 004 解説
 
AtCoder Beginner Contest 029 解説
AtCoder Beginner Contest 029 解説AtCoder Beginner Contest 029 解説
AtCoder Beginner Contest 029 解説
 
最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解く最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解く
 
AtCoder Regular Contest 048
AtCoder Regular Contest 048AtCoder Regular Contest 048
AtCoder Regular Contest 048
 
AtCoder Beginner Contest 030 解説
AtCoder Beginner Contest 030 解説AtCoder Beginner Contest 030 解説
AtCoder Beginner Contest 030 解説
 
AtCoder Beginner Contest 035 解説
AtCoder Beginner Contest 035 解説AtCoder Beginner Contest 035 解説
AtCoder Beginner Contest 035 解説
 
At coder regular contest 013 解説
At coder regular contest 013 解説At coder regular contest 013 解説
At coder regular contest 013 解説
 

Similar to Code Formula 2014 予選A 解説

AtCoder Beginner Contest 010 解説
AtCoder Beginner Contest 010 解説AtCoder Beginner Contest 010 解説
AtCoder Beginner Contest 010 解説AtCoder Inc.
 
AtCoder Regular Contest 046
AtCoder Regular Contest 046AtCoder Regular Contest 046
AtCoder Regular Contest 046AtCoder Inc.
 
Code Formula 予選B 解説
Code Formula 予選B 解説Code Formula 予選B 解説
Code Formula 予選B 解説AtCoder Inc.
 
AtCoder Beginner Contest 003 解説
AtCoder Beginner Contest 003 解説AtCoder Beginner Contest 003 解説
AtCoder Beginner Contest 003 解説AtCoder Inc.
 
AtCoder Regular Contest 044 解説
AtCoder Regular Contest 044 解説AtCoder Regular Contest 044 解説
AtCoder Regular Contest 044 解説AtCoder Inc.
 
AtCoder Beginner Contest 011 解説
AtCoder Beginner Contest 011 解説AtCoder Beginner Contest 011 解説
AtCoder Beginner Contest 011 解説AtCoder Inc.
 

Similar to Code Formula 2014 予選A 解説 (6)

AtCoder Beginner Contest 010 解説
AtCoder Beginner Contest 010 解説AtCoder Beginner Contest 010 解説
AtCoder Beginner Contest 010 解説
 
AtCoder Regular Contest 046
AtCoder Regular Contest 046AtCoder Regular Contest 046
AtCoder Regular Contest 046
 
Code Formula 予選B 解説
Code Formula 予選B 解説Code Formula 予選B 解説
Code Formula 予選B 解説
 
AtCoder Beginner Contest 003 解説
AtCoder Beginner Contest 003 解説AtCoder Beginner Contest 003 解説
AtCoder Beginner Contest 003 解説
 
AtCoder Regular Contest 044 解説
AtCoder Regular Contest 044 解説AtCoder Regular Contest 044 解説
AtCoder Regular Contest 044 解説
 
AtCoder Beginner Contest 011 解説
AtCoder Beginner Contest 011 解説AtCoder Beginner Contest 011 解説
AtCoder Beginner Contest 011 解説
 

More from AtCoder Inc.

AtCoderに毎回参加したくなる仕組み
AtCoderに毎回参加したくなる仕組みAtCoderに毎回参加したくなる仕組み
AtCoderに毎回参加したくなる仕組みAtCoder Inc.
 
Square869120 contest #2
Square869120 contest #2Square869120 contest #2
Square869120 contest #2AtCoder Inc.
 
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説AtCoder Inc.
 
Chokudai Contest 001
Chokudai Contest 001Chokudai Contest 001
Chokudai Contest 001AtCoder Inc.
 
AtCoder Regular Contest 049 解説
AtCoder Regular Contest 049 解説AtCoder Regular Contest 049 解説
AtCoder Regular Contest 049 解説AtCoder Inc.
 
MUJINプログラミングチャレンジ2016 解説
MUJINプログラミングチャレンジ2016 解説MUJINプログラミングチャレンジ2016 解説
MUJINプログラミングチャレンジ2016 解説AtCoder Inc.
 
AtCoder Beginner Contest 033 解説
AtCoder Beginner Contest 033 解説AtCoder Beginner Contest 033 解説
AtCoder Beginner Contest 033 解説AtCoder Inc.
 
DDPC 2016 予選 解説
DDPC 2016 予選 解説DDPC 2016 予選 解説
DDPC 2016 予選 解説AtCoder Inc.
 
CODE FESTIVAL 2015 沖縄ツアー 解説
CODE FESTIVAL 2015 沖縄ツアー 解説CODE FESTIVAL 2015 沖縄ツアー 解説
CODE FESTIVAL 2015 沖縄ツアー 解説AtCoder Inc.
 
CODE FESTIVAL 2015 解説
CODE FESTIVAL 2015 解説CODE FESTIVAL 2015 解説
CODE FESTIVAL 2015 解説AtCoder Inc.
 
CODE FESTIVAL 2015 予選B 解説
CODE FESTIVAL 2015 予選B 解説CODE FESTIVAL 2015 予選B 解説
CODE FESTIVAL 2015 予選B 解説AtCoder Inc.
 
AtCoder Regular Contest 045 解説
AtCoder Regular Contest 045 解説AtCoder Regular Contest 045 解説
AtCoder Regular Contest 045 解説AtCoder Inc.
 
CODE FESTIVAL 2015 予選A 解説
CODE FESTIVAL 2015 予選A 解説CODE FESTIVAL 2015 予選A 解説
CODE FESTIVAL 2015 予選A 解説AtCoder Inc.
 
AtCoder Beginner Contest 028 解説
AtCoder Beginner Contest 028 解説AtCoder Beginner Contest 028 解説
AtCoder Beginner Contest 028 解説AtCoder Inc.
 
天下一プログラマーコンテスト2015 予選B 解説
天下一プログラマーコンテスト2015 予選B 解説天下一プログラマーコンテスト2015 予選B 解説
天下一プログラマーコンテスト2015 予選B 解説AtCoder Inc.
 
AtCoder Regular Contest 043 解説
AtCoder Regular Contest 043 解説AtCoder Regular Contest 043 解説
AtCoder Regular Contest 043 解説AtCoder Inc.
 

More from AtCoder Inc. (20)

TCO2017R1
TCO2017R1TCO2017R1
TCO2017R1
 
AtCoderに毎回参加したくなる仕組み
AtCoderに毎回参加したくなる仕組みAtCoderに毎回参加したくなる仕組み
AtCoderに毎回参加したくなる仕組み
 
Square869120 contest #2
Square869120 contest #2Square869120 contest #2
Square869120 contest #2
 
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
 
Chokudai Contest 001
Chokudai Contest 001Chokudai Contest 001
Chokudai Contest 001
 
AtCoder Regular Contest 049 解説
AtCoder Regular Contest 049 解説AtCoder Regular Contest 049 解説
AtCoder Regular Contest 049 解説
 
MUJINプログラミングチャレンジ2016 解説
MUJINプログラミングチャレンジ2016 解説MUJINプログラミングチャレンジ2016 解説
MUJINプログラミングチャレンジ2016 解説
 
AtCoder Beginner Contest 033 解説
AtCoder Beginner Contest 033 解説AtCoder Beginner Contest 033 解説
AtCoder Beginner Contest 033 解説
 
DDPC 2016 予選 解説
DDPC 2016 予選 解説DDPC 2016 予選 解説
DDPC 2016 予選 解説
 
arc047
arc047arc047
arc047
 
abc032
abc032abc032
abc032
 
CODE FESTIVAL 2015 沖縄ツアー 解説
CODE FESTIVAL 2015 沖縄ツアー 解説CODE FESTIVAL 2015 沖縄ツアー 解説
CODE FESTIVAL 2015 沖縄ツアー 解説
 
abc031
abc031abc031
abc031
 
CODE FESTIVAL 2015 解説
CODE FESTIVAL 2015 解説CODE FESTIVAL 2015 解説
CODE FESTIVAL 2015 解説
 
CODE FESTIVAL 2015 予選B 解説
CODE FESTIVAL 2015 予選B 解説CODE FESTIVAL 2015 予選B 解説
CODE FESTIVAL 2015 予選B 解説
 
AtCoder Regular Contest 045 解説
AtCoder Regular Contest 045 解説AtCoder Regular Contest 045 解説
AtCoder Regular Contest 045 解説
 
CODE FESTIVAL 2015 予選A 解説
CODE FESTIVAL 2015 予選A 解説CODE FESTIVAL 2015 予選A 解説
CODE FESTIVAL 2015 予選A 解説
 
AtCoder Beginner Contest 028 解説
AtCoder Beginner Contest 028 解説AtCoder Beginner Contest 028 解説
AtCoder Beginner Contest 028 解説
 
天下一プログラマーコンテスト2015 予選B 解説
天下一プログラマーコンテスト2015 予選B 解説天下一プログラマーコンテスト2015 予選B 解説
天下一プログラマーコンテスト2015 予選B 解説
 
AtCoder Regular Contest 043 解説
AtCoder Regular Contest 043 解説AtCoder Regular Contest 043 解説
AtCoder Regular Contest 043 解説
 

Recently uploaded

TEAMIN Service overview for customer_20240422.pdf
TEAMIN Service overview for customer_20240422.pdfTEAMIN Service overview for customer_20240422.pdf
TEAMIN Service overview for customer_20240422.pdfyukisuga3
 
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライド
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライドリアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライド
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライドKen Fukui
 
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライドリアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライドKen Fukui
 
UniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScriptUniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScriptyuitoakatsukijp
 
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライドリアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライドKen Fukui
 
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライドリアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライドKen Fukui
 
The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024koheioishi1
 
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライドリアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライドKen Fukui
 
TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentationTokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentationYukiTerazawa
 
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学ssusere0a682
 

Recently uploaded (10)

TEAMIN Service overview for customer_20240422.pdf
TEAMIN Service overview for customer_20240422.pdfTEAMIN Service overview for customer_20240422.pdf
TEAMIN Service overview for customer_20240422.pdf
 
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライド
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライドリアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライド
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライド
 
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライドリアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
 
UniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScriptUniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScript
 
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライドリアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
 
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライドリアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
 
The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024
 
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライドリアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
 
TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentationTokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentation
 
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
 

Code Formula 2014 予選A 解説

  • 1. Code Formula 2014 予選A 解説 AtCoder株式会社 代表取締役 高橋 直大 2014/8/20 1
  • 2. ©AtCoder Inc. All rights reserved. 2 A問題 立方数 1.問題概要 2.アルゴリズム 2014/8/20
  • 3. A問題 問題概要 •整数Nが与えられる •Nが立方数かどうかを判定しなさい •制約 •1 ≦ N ≦ 1,000,000 2014/8/20 3
  • 4. A問題 アルゴリズム •方針1 –Nの1/3乗を求め、整数になっているかどうかを判定する •整数になっているかは難しいので、最も近い整数に近似し、その 整数を3乗した数がNになっているのか判定するのが良い。 •直接求めることが可能だが、誤差に注意する必要あり。 •方針2 –1から100までの全ての数を3乗し、Nが存在するかどうか を判定する •Nが100万以下ということは、Nの三乗根は100以下であることを利 用する •こちらの方が確実 2014/8/20 4
  • 5. ©AtCoder Inc. All rights reserved. 5 B問題 ボウリングゲーム 1.問題概要 2.アルゴリズム 2014/8/20
  • 6. B問題 問題概要 •ボウリングで倒したピンが、番号で与えられる •グラフィカルな形式に変換しなさい 2014/8/20 6
  • 7. B問題 アルゴリズム •長さ10の配列を用意する –それぞれに0を入れておく •1投目に倒したピンの番号に対応する配列に1を入 れる •2投目に倒したピンの番号に対応する配列に2を入 れる •それぞれのピンの場所に対して、配列の番号に合 わせた文字を出力する 2014/8/20 7
  • 8. B問題 アルゴリズム •よくある間違い –末尾改行を入れていない •A問題と同じく、末尾改行が必須となります。 •フォーマットを整える問題なので、フォーマットは統一しましょう。 –出力順序を間違えている 2014/8/20 8
  • 9. ©AtCoder Inc. All rights reserved. 9 C問題 決勝進出者 1.問題概要 2.アルゴリズム 2014/8/20
  • 10. C問題 問題概要 •N = 4, K = 5の時 –最初の段階で、確定するのは以下の5人 2014/8/20 10 予選A 予選B 予選C 予選D
  • 11. C問題 問題概要 •N = 4, K = 5の時 –最初の段階で、確定するのは以下の5人 –予選Aの結果が出ても同じ 2014/8/20 11 予選A 予選B 予選C 予選D 1 2 3 4 5
  • 12. C問題 問題概要 •N = 4, K = 5の時 –最初の段階で、確定するのは以下の5人 –予選B以降は、既に通過した人の分を先に回す必要があ る •該当する緑のマスが、2が被っているので、水色のマスが新規に 通過枠となる。 2014/8/20 12 予選A 予選B 予選C 予選D 1 2 2 1 3 3 4 4 5 5
  • 13. C問題 問題概要 •N = 4, K = 5の時 –最初の段階で、確定するのは以下の5人 –予選B以降は、既に通過した人の分を先に回す必要があ る •該当する緑のマスが、2が被っているので、水色のマスが新規に 通過枠となる。が、この枠も被っているので、次の通過枠に。 2014/8/20 13 予選A 予選B 予選C 予選D 1 2 2 1 3 3 4 4 5 5
  • 14. C問題 問題概要 •N = 4, K = 5の時 –最初の段階で、確定するのは以下の5人 –予選B以降は、既に通過した人の分を先に回す必要があ る •ここまで通過枠を動かした段階で、もう重複している人はいない ため、予選Bで通過が確定していく人はいない。 2014/8/20 14 予選A 予選B 予選C 予選D 1 2 2 1 3 3 4 4 5 5
  • 15. C問題 問題概要 •N = 4, K = 5の時 –最初の段階で、確定するのは以下の5人 –予選B以降は、既に通過した人の分を先に回す必要があ る •予選Cでは以下のようになる。 2014/8/20 15 予選A 予選B 予選C 予選D 1 2 1 2 1 2 3 3 3 4 4 4 5 5 5
  • 16. C問題 問題概要 •N = 4, K = 5の時 –最初の段階で、確定するのは以下の5人 –予選B以降は、既に通過した人の分を先に回す必要があ る •予選Dでは以下のようになる。 –説明の都合でサンプルとは少し違います。 2014/8/20 16 予選A 予選B 予選C 予選D 1 2 1 2 2 1 2 1 3 3 3 3 4 4 4 5 5 5 5 4
  • 17. C問題 アルゴリズム •注意点 –実装に混乱しないようにしよう! •実装するべきものはそんなに多くない! –通過枠を1つずつ確認する処理 –通過枠を1つ増やす処理 »増やした時、既に順位が確定していれば、そこを確認する処理も必要 –制限時間に気を付けよう! •通過枠を毎回頭から確認していくと、制限時間に間に合いません –今どこまでが通過枠になっているかを保持しておく 2014/8/20 17
  • 18. ©AtCoder Inc. All rights reserved. 18 D問題 無刻印キーボード 1.問題概要 2.アルゴリズム 2014/8/20
  • 19. D問題 問題概要 •キートップの書かれていないキーボードが存在する •文章を打ちたいが、キーを一部しか覚えていない •解らない際は、覚えていないキーの中からランダム に打ち、間違えた場合は消す •ある文章を打ちたい時に、キーを打つ必要のある回 数の期待値を出力せよ •制約 •文字数≦50, 文字種≦36 2014/8/20 19
  • 20. D問題 アルゴリズム •純粋な探索は到底間に合わない。 •動的計画法も難しい –キーの種類は36種類 –どのキーが解っているかを記憶するには2^36通り覚える 必要がある •そこで、何か工夫する必要がある。 2014/8/20 20
  • 21. D問題 アルゴリズム •各キーについて注目する –正しいタイミングで打つ必要がある回数は、打ちたい文章 の出現文字数と同じ –つまり、間違ったタイミングで打ってしまう回数の期待値を 求めれば良い •各文字について、間違えるとしても、間違える回数は高々1回 –その場合、文字を消す処理も必要なので、打つ回数は2回増える •間違える確率は、打たれるべき文字の前に、場所が不明な文字 が何種類あるかで決まる。 –例えば、”abc”と打ちたい時、’c’に着目すると、’a’と打ちたい時にcと 打ってしまうパターンや、’b’と打ちたい時に’c’に打ってしまうパター ンが存在し、それらを避けることが可能な確率は、’a’および’b’が’c’ より先に見つかる確率であり、これは1/3である。 –つまり、間違えない確率は、1/(手前にある不明な種類数+1)である。 »出現しない文字も同様であることに注意 2014/8/20 21
  • 22. D問題 アルゴリズム •注意点 –動的計画法で解く場合も、残り文字数に着目すれば解け なくはない。 •だが、単純に計算した方が実装はずっとシンプルになる –文字数の制約が50文字までだが、もちろん10万文字など でも解ける •制約に騙されないように! 2014/8/20 22