SlideShare une entreprise Scribd logo
1  sur  121
AtCoder Beginner Contest #004
解説資料

2014年 2月 16日
AtCoder株式会社 青木謙尚
©AtCoder Inc. All rights reserved.
1
目次
1. 競技プログラミングを始める前に
2. A~D問題
• ところどころに入出力の方法があります

©AtCoder Inc. All rights reserved.

2
競技プログラミングを始める前に

©AtCoder Inc. All rights reserved.

3
競技プログラミングを始める前に

(競技)プログラミングを始めたいけど、
そもそもプログラムって何をするの?

©AtCoder Inc. All rights reserved.

4
競技プログラミングを始める前に
•

(競技)プログラミングを始めたいけど、そもそもプロ

グラムって何をするの?
•

大雑把に言うと

1. 情報を受け取って
情報

プログラム

©AtCoder Inc. All rights reserved.

5
競技プログラミングを始める前に
•

(競技)プログラミングを始めたいけど、そもそもプロ

グラムって何をするの?
•

大雑把に言うと

1. 情報を受け取って
情報

プログラム

1. 何らかの処理を施して情報を加工する
情報

プログラム

©AtCoder Inc. All rights reserved.

情報

6
競技プログラミングを始める前に
•

(競技)プログラミングを始めたいけど、そもそもプロ

グラムって何をするの?
•

大雑把に言うと

1. 情報を受け取って
情報

プログラム

1. 何らかの処理を施して情報を加工する
プログラム

情報

1. そしてどこかへ渡す
情報
プログラム

情報

情報

©AtCoder Inc. All rights reserved.

7
競技プログラミングを始める前に
•

具体例

 検索
くおえうえーーーるえうおおお

©AtCoder Inc. All rights reserved.

可愛い

8
競技プログラミングを始める前に
•

具体例

 検索
くおえうえーーーるえうおおお

受け取る

©AtCoder Inc. All rights reserved.

可愛い

Gaagle
9
競技プログラミングを始める前に
•

具体例

 検索
くおえうえーーーるえうおおお

受け取る

可愛い

Gaagle

検索という処理
検索結果
©AtCoder Inc. All rights reserved.

10
競技プログラミングを始める前に
•

具体例

 検索
くおえうえーーーるえうおおお

受け取る

可愛い

Gaagle

検索という処理
結果を渡す
©AtCoder Inc. All rights reserved.

検索結果
11
競技プログラミングを始める前に

• 入出力ができなければ、

• “くおえうえーーーるえうおおお 可愛
い”
• を受け取れないし、
• 検索結果も渡せない

©AtCoder Inc. All rights reserved.

12
競技プログラミングを始める前に

• 入出力ができなければ、

• “くおえうえーーーるえうおおお 可愛
い”
• を受け取れないし、
• 検索結果も渡せない
• アルゴリズムより先にすることがある!
• 本当に本当に始めたばかりの人へ
• まずは入出力から始めませんか?
©AtCoder Inc. All rights reserved.

13
A問題
1. 問題概要
2. 入力
3. 処理(アルゴリズム)
4. 出力

©AtCoder Inc. All rights reserved.

14
A問題 問題概要

1. 整数Nが与えられる。

1. 2*Nを出力せよ。

©AtCoder Inc. All rights reserved.

15
A問題 問題概要

1. 整数Nが与えられる。
 入力される値であるNを保存する!
2. 2*Nを出力せよ。
 保存したNに2をかけて出力する!

©AtCoder Inc. All rights reserved.

16
A問題 入力
• 入力の取り方は標準入出力でググってください

• とはいえ、少しだけサンプルを載せます
• コードの色は
• 受け取り
• 処理
• 出力
• を表したものではないので、注意して下さい
• AtCoderへ提出したときの色です
©AtCoder Inc. All rights reserved.

17
A問題 入力

• C

#include<stdio.h>
int main(){
int N;
scanf("%d", &N);
return 0;
}
©AtCoder Inc. All rights reserved.

18
A問題 入力

• C++

#include<iostream>
int main(){
int N;
std::cin >> N;
return 0;
}
©AtCoder Inc. All rights reserved.

19
A問題 入力

• Java

import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
}
}
©AtCoder Inc. All rights reserved.

20
A問題 入力

• C#

using System;
class Program{
static void Main(string[] args){
int N = int.Parse(Console.ReadLine());
}
}

©AtCoder Inc. All rights reserved.

21
A問題 入力
• その他
•

http://practice.contest.atcoder.jp/ を参照してください

•

たいていの言語の例があります

©AtCoder Inc. All rights reserved.

22
A問題 補足(変数と型について)
• さきほどから入力を受け取ると何度も書いてま

すが、受け取るためには保存するための入れ物
が必要です。
• プログラムの世界でも入れ物に形があります。
 これを型といいます。

©AtCoder Inc. All rights reserved.

23
A問題 補足(変数と型について)
• 型の例

 整数型 int
 0, 1, 2 … 100 … などの整数
 文字型 char
 a, b, c … A, B … などの1文字
•

各型で表現できる最大、最小の値は言語や処理

系で変化します
©AtCoder Inc. All rights reserved.

24
A問題 補足(変数と型について)
• 変数について



int variable = 4;
4

とすると、

variableという入れ物に4が入ります

variable

 さらに

と

variable = 1;

1

とする

variableに1が上書きされます

variable
©AtCoder Inc. All rights reserved.

25
A問題 処理(アルゴリズム)

受け取ったNに
 2をかける

©AtCoder Inc. All rights reserved.

26
A問題 処理(アルゴリズム)

受け取ったNに
 2をかける
コードは以下だけ

N = N * 2;

©AtCoder Inc. All rights reserved.

27
A問題 出力

処理の結果を出力します
• C

printf(“%dn”, N);
• C++

cout << N << endl;
©AtCoder Inc. All rights reserved.

28
A問題 出力
• Java

System.out.println(N);
• C#

Console.WriteLine(N);

©AtCoder Inc. All rights reserved.

29
B問題
1. 問題概要
2. 入力
3. 処理(アルゴリズム)
4. 出力

©AtCoder Inc. All rights reserved.

30
B問題 問題概要

1. 4x4の盤面が与えられる。

2. 盤面を180度回転させて出力せよ。

©AtCoder Inc. All rights reserved.

31
B問題 問題概要

1. 4x4の盤面が与えられる。
 盤面を保存する
2. 盤面を180度回転させて出力せよ。
 盤面を180度回転させる
 出力する

©AtCoder Inc. All rights reserved.

32
B問題 問題概要
絶望ポイントその1

• 盤面の状態ってどう保存すればいいんだ!?

絶望ポイントその2
• 180度の回転ってどうやればいいんだ!?

©AtCoder Inc. All rights reserved.

33
B問題 問題概要
絶望ポイントその1

• 盤面の状態ってどう保存すればいいんだ!?
 配列を使いましょう
絶望ポイントその2
• 180度の回転ってどうやればいいんだ!?
 コピー用の配列を作る
 元の配列を逆からコピーする
©AtCoder Inc. All rights reserved.

34
B問題 入力
まずは盤面の保存から

• 配列って何?

©AtCoder Inc. All rights reserved.

35
B問題 入力
まずは盤面の保存から

• 配列って何?

連続した箱

です

• 世界で最も偉大な箱かも

©AtCoder Inc. All rights reserved.

36
B問題 入力
まずは盤面の保存から

• 配列って何?
1つだけだと変数
連続してたら配列

©AtCoder Inc. All rights reserved.

37
B問題 入力
まずは盤面の保存から

• どこが偉大なの?

縦に並べることができる

 これで盤面が作れる!

©AtCoder Inc. All rights reserved.

38
B問題 入力
まずは盤面の保存から

• 配列の概念はわかったけど、何をすればいい
の?

©AtCoder Inc. All rights reserved.

39
B問題 入力
まずは盤面の保存から

• 配列の概念はわかったけど、何をすればいい
の?

宣言

して下さい

©AtCoder Inc. All rights reserved.

40
B問題 入力
2次元配列の宣言
• C/C++

char board[4][4];
• Java

char[][] board = new char[4][4];
• C#

char[,] board = new[4, 4];
©AtCoder Inc. All rights reserved.

41
B問題 補足(配列のアクセス方法)

char array [4];

1

array という配列を宣言する

2

a

#

z

%

すでに文字が格納されているとする

3

a

#

z

%

array[0]のようにしてアクセスでき

array[0]
array[2]
array[1]
array[3]

0から始まることに注意!

©AtCoder Inc. All rights reserved.

42
B問題 補足(配列のアクセス方法2)

char board[2][2];
board

boardという2次元配列を宣言する
a

board

z

#

%

同様に、何らかの文字が入っているとする

board[0][0]

a

#

board[0][1]

board[1][0]

z

%

board[1][1]

board[0][0]には
board[0][1]には
board[1][0]には
board[1][1]には

©AtCoder Inc. All rights reserved.

’a’
’#’
’z’
’%’
43
B問題 処理(アルゴリズム)

180度の回転ってどうするの?
 コピー用の配列を用意します。


char copy[4][4];

を宣言しておきます。

 元の配列を逆からコピー用の配列に移します。
 for文を使います。

©AtCoder Inc. All rights reserved.

44
B問題 処理(アルゴリズム)
コーディングに入る前に、いまからすることを図
示します。
1. コピー用の配列を宣言します。

char copy[4][4];

©AtCoder Inc. All rights reserved.

45
B問題 処理(アルゴリズム)
2.元の配列を逆からコピー用の配列に移します。

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

O

x

board

copy
©AtCoder Inc. All rights reserved.

46
B問題 処理(アルゴリズム)
2.元の配列を逆からコピー用の配列に移します。

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

O

x

board

copy
©AtCoder Inc. All rights reserved.

47
B問題 処理(アルゴリズム)
2.元の配列を逆からコピー用の配列に移します。

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

O

x

board

copy
©AtCoder Inc. All rights reserved.

48
B問題 処理(アルゴリズム)

途中を省略して…

©AtCoder Inc. All rights reserved.

49
B問題 処理(アルゴリズム)
2.元の配列を逆からコピー用の配列に移します。

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

O

board

copy
©AtCoder Inc. All rights reserved.

50
B問題 処理(アルゴリズム)
2.元の配列を逆からコピー用の配列に移します。

x

x

x

O

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

board

x

x

x

x

x

x

x

x

x

O

copy
©AtCoder Inc. All rights reserved.

51
B問題 処理(アルゴリズム)
•

移せばよいことはわかったけど、実際にどうするの?
 for文を使います。
 for文とは繰り返し行われる処理を記述するもので

•

す。
復習
 2次元配列の添字について

©AtCoder Inc. All rights reserved.

52
B問題 処理(アルゴリズム)
• 2次元配列の添字について

[0,0] [0,1] [0,2] [0,3]
[1,0] [1,1] [1,2] [1,3]
[2,0] [2,1] [2,2] [2,3]
[3,0] [3,1] [3,2] [3,3]
©AtCoder Inc. All rights reserved.

•

注意点
 数学のxy座標とは
異なる
 マスは4x4だが、
添字は[3,3]まで

53
B問題 処理(アルゴリズム)
•

for文のコード

for(int i = 0; i < 4; i++){
for(int j = 0; j < 4; j++){
copy[i][j] = board[3-i][3-j];
}
}

©AtCoder Inc. All rights reserved.

54
B問題 処理(アルゴリズム)
for文のコード(i = 0, j = 0のとき)

copy[0][0] = board[3-0][3-0];
O

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

•

x

copy

board
©AtCoder Inc. All rights reserved.

55
B問題 処理(アルゴリズム)
for文のコード(i = 0, j = 1のとき)

copy[0][1] = board[3-0][3-1];
O

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

•

x

board

copy
©AtCoder Inc. All rights reserved.

56
B問題 処理(アルゴリズム)
for文のコード(i = 0, j = 2のとき)

copy[0][2] = board[3-0][3-2];
O

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

•

x

board

copy
©AtCoder Inc. All rights reserved.

57
B問題 処理(アルゴリズム)

途中を省略して…

©AtCoder Inc. All rights reserved.

58
B問題 処理(アルゴリズム)
for文のコード(i = 3, j = 2のとき)

copy[3][2] = board[3-3][3-2];

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

O

x

•

board

copy
©AtCoder Inc. All rights reserved.

59
B問題 処理(アルゴリズム)
for文のコード(i = 3, j = 3のとき)

copy[3][3] = board[3-3][3-3];

x

x

x

O

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

board

x

x

x

x

x

x

x

x

O

x

•

copy
©AtCoder Inc. All rights reserved.

60
B問題 出力
3.180度回転させたものを順に出力するだけ

 これもforを使って書いて下さい。
x

x

x

x

x

x

x

x

x

x

x

O

x

x

x

x

copy
©AtCoder Inc. All rights reserved.

61

x
B問題 処理(アルゴリズム)

途中を省略して…

©AtCoder Inc. All rights reserved.

62
B問題 出力
3.180度回転させたものを順に出力するだけ

x

x

x

x

x

x

x

x

x

x

x

O

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

O

x

x

copy
©AtCoder Inc. All rights reserved.

63

x
C問題
1. 問題概要
2. 処理(アルゴリズム)

©AtCoder Inc. All rights reserved.

64
C問題

問題概要

1. 1から6までの数字が割り振られた、6枚のカー
ドが左から順に整列している。
2. 整数N(1≦N≦10^9)が与えられる。

3. i=0からi=N-1までのN回、カードを入れ替え
る。
 左から{(i%5)+1}番目のカードと、
左から{(i%5)+2}番目のカードを入れ替える。
©AtCoder Inc. All rights reserved.

65
C問題
•

補足(剰余について)

剰余演算子 % について
 要は「余り」のこと
 7%3 は「7を3で割った余り」を意味する

 つまり1
 ほとんどのプログラミング言語では%が剰余
演算子として実装されている

©AtCoder Inc. All rights reserved.

66
C問題

処理(アルゴリズム)

1. この問題のポイントは、Nの値に大きな値が含
まれること(最大でN=10^9まで)
2. つまり、普通に交換していくだけでは時間的な

制約上、満点を得るのは厳しい(2s以内)
3. ここに気づくことができるかが、満点を得るた
めのポイント
 できるだけ交換回数を減らしたい!
©AtCoder Inc. All rights reserved.

67
C問題
•

処理(アルゴリズム)

とはいえ、まずは実験してみる

初期状態

1

i=0

2

i=1

2

2
1
3

3

4

5

6

3

4

5

6

1

4

5

6

©AtCoder Inc. All rights reserved.

68
C問題
•

処理(アルゴリズム)

まずは実験してみる

i=2

2

3

4

1

i=3

2

3

4

5

i=4

2

3

4

5

©AtCoder Inc. All rights reserved.

5
1
6

6
6
1
69
C問題
•

処理(アルゴリズム)

あれ?1が右端に移動して2~6までは整列している・・・?

i=4
•

i=5

2

3

4

5

6

1

さらに実験してみる

3

2

4

©AtCoder Inc. All rights reserved.

5

6

1
70
C問題
•

処理(アルゴリズム)

さらに実験してみる

i=6

3

4

i=7

3

4

5

i=8

3

4

5

5

6

©AtCoder Inc. All rights reserved.

6

1

2

2

6

1

2

1
71
C問題

処理(アルゴリズム)

3

i=9

4

5

6

1

2

•

先頭から3~6が整列している。で、後ろに1と2が並んでいる。

•

ということは、もっと進めてみると以下のようになるのでは?

i=?

4

5

6

1

©AtCoder Inc. All rights reserved.

2

3
72
C問題
•

処理(アルゴリズム)

さらにさらに進めると、きっとこういった遷移が行われるはず

i = ??

5

6

1

2

3

4

i = ???

6

1

2

3

4

5

i = ????

1

2

3

4

5

6

©AtCoder Inc. All rights reserved.

73
処理(アルゴリズム)

C問題
•

iがいくつのときかはわからないけれど、初期状態に帰ってくる?



あくまでも現段階では予想である

i=0

1

2

3

4

5

6

i = ????

1

2

3

4

5

6

©AtCoder Inc. All rights reserved.

74
C問題
•

処理(アルゴリズム)

確かめてみる!



方法は、カードの遷移を出力する

i=0
i=1
i=2
i = 29
i = 30

213456
231456
234156
:
123456
213456

©AtCoder Inc. All rights reserved.

発見!

75
C問題
•

処理(アルゴリズム)

確かめてみる!



方法は、カードの遷移を出力する

交換回数はiが
0から29までの30回

i=0
i=1
i=2
i = 29
i = 30

213456
231456
234156
:
123456
213456

カードが6枚あって、入れ替え可能な場所が5通りあるか
6 x 5 = 30回交換すると初期状態に戻る
©AtCoder Inc. All rights reserved.

76
C問題
•

処理(アルゴリズム)

実験の結果、30回交換すると初期状態に戻ることがわ

かった。
 31回の交換は、1回の交換と同じ。
 32回の交換は、2回の交換と同じ。
 100回の交換は?
 100 mod 30 => 10 より、10回の交換と同じ
 30で割ったときの余り(剰余)がポイント
• Nを30で割ったときの余りで交換すればよい

©AtCoder Inc. All rights reserved.

77
C問題
•

処理(アルゴリズム)

これでNの値が大きくなっても対応できる!

 たとえば、N = 1000 のとき、実際に1000回交換す
るのではなく、1000 mod 30 => 10回交換すればよ
い
 30で割ったときの余りは、0~29の30通りあるが、
最大でも29回ですむ。

N = N % 30;
としておけばよい
©AtCoder Inc. All rights reserved.

78
C問題

処理(アルゴリズム)

•

数値の入れ替えの仕方

•

A, Bを入れ替えたい時の処理
•
•

A = B;

•
•

C = A;

B = C;

のように、Cを中継してあげれば入れ替えることが出来
る。

•

C++などは、標準でswap関数が用意されている

©AtCoder Inc. All rights reserved.

79
AtCoder Beginner Contest #004
解説資料 続き

2014年 2月 16日
AtCoder株式会社 高橋直大
©AtCoder Inc. All rights reserved.
80
D問題
1. 問題概要
2. 処理(アルゴリズム)

©AtCoder Inc. All rights reserved.

81
D問題
•

問題概要

番号がついた箱が無限個並んでおり、左から順番

に、..,-2,-1,0,1,2,..と番号がついている
•

いくつかの箱には、マーブルが入っている。
•
•

番号0の箱には、緑のマーブルがG個

•
•

番号-100の箱には、赤いマーブルがR個

番号100の箱には、青いマーブルがB個

これらのマーブルを、1個隣の箱に移動することが出
来る。

•

全ての箱に、マーブルが2個以上入っていない状態に
する。

©AtCoder Inc. All rights reserved.

82
D問題
•

部分点1

•
•

R, G, B ≦ 5

部分点2
•

•

問題概要

R, G, B ≦ 40

満点
•

R, G, B ≦ 300

©AtCoder Inc. All rights reserved.

83
D問題
•

処理(アルゴリズム)

例えば、Gが4の時

-3

-2

-1

0

1

2

©AtCoder Inc. All rights reserved.

3

84
D問題

処理(アルゴリズム)

•

例えば、Gが4の時

•

マーブルを右に

-3

-2

-1

0

1

2

©AtCoder Inc. All rights reserved.

3

85
D問題

処理(アルゴリズム)

•

例えば、Gが4の時

•

マーブルを右に2回移動して

-3

-2

-1

0

1

2

©AtCoder Inc. All rights reserved.

3

86
D問題

処理(アルゴリズム)

•

例えば、Gが4の時

•

マーブルを右に2回移動して、さらにもう1個右に

-3

-2

-1

0

1

2

©AtCoder Inc. All rights reserved.

3

87
D問題

処理(アルゴリズム)

•

例えば、Gが4の時

•

マーブルを右に2回移動して、さらにもう1個右に

•

最後に左に移動しておしまい

-3

-2

-1

0

1

2

©AtCoder Inc. All rights reserved.

3

88
D問題
•

処理(アルゴリズム)

部分点1は、このように、R,G,Bに対して、左右にマー

ブルを振り分けてあげれば良い。
•
•

深さ優先探索や、幅優先探索を使ってもOK。

部分点2も、右、左、右、左、と振り分けてあげてしま
えば、R,G,Bのマーブルが40個以下、かつ、箱の数が
100個離れているので、重なることもなく、解くことが
出来る。

•

満点解法は、もう少し考察が必要。

©AtCoder Inc. All rights reserved.

89
処理(アルゴリズム)

D問題
•

どのマーブルを右に、どのマーブルを左に・・・と考

えるのは非常に面倒!
•

最後の状態だけ考えて、そこから、その状態にするの
に必要な手数を考えたい。

3

2

1 0

1

2

3

3

2

1 0

©AtCoder Inc. All rights reserved.

1

2

3

90
処理(アルゴリズム)

D問題
•

どのマーブルを右に、どのマーブルを左に・・・と考

えるのは非常に面倒!
•

最後の状態だけ考えて、そこから、その状態にするの
に必要な手数を考えたい。

•

単純に、移動距離を足し算してあげればOK!
1+1+2=4
1
3

2

1 0

1

2

3

3

2

1 2

1 0

1

©AtCoder Inc. All rights reserved.

2

3

91
D問題
•

処理(アルゴリズム)

R,G,Bが大きくなると・・・

:

:

…

…

©AtCoder Inc. All rights reserved.

92
D問題

処理(アルゴリズム)

•

R,G,Bが大きくなると・・・

•

同じ広げ方をすると、被ってしまうことがある!
•

単純に右、左、右、左、と考えるだけではダメ。

…

…

©AtCoder Inc. All rights reserved.

93
処理(アルゴリズム)

D問題
•

解法1 広げ方の全探索!

•

図のように、途中で間が空くことはありえない。
3

•

2

1 0

1

2

3

よって、赤・緑・青のマーブルの入っている、一番左
の箱だけ決めれば、最終状態は確定する。
•

これだけだと、それぞれ可能性のある場所が1000近
くあるため、微妙に間に合わない。
•

高速な実装をすればこれでもギリギリ間に合
う。

©AtCoder Inc. All rights reserved.

94
D問題
•

処理(アルゴリズム)

赤、緑、青に対して、それぞれ全て全探索をすると、

計算量が3乗になってしまい間に合わない。
•
•

何か工夫が必要

緑から先に決めてあげることによって、赤と青を別々
に計算することが出来る!

©AtCoder Inc. All rights reserved.

95
D問題
•

処理(アルゴリズム)

例えば図のような場合

©AtCoder Inc. All rights reserved.

96
D問題

処理(アルゴリズム)

•

例えば図のような場合

•

まず緑の広げ方を決めてあげる

©AtCoder Inc. All rights reserved.

97
D問題

処理(アルゴリズム)

•

例えば図のような場合

•

まず緑の広げ方を決めてあげる

•

すると、赤の広げ方、青の広げ方は、それぞれの広げ
方に干渉しない。

•

よって、2乗の計算量で計算することが可能になる!

©AtCoder Inc. All rights reserved.

98
処理(アルゴリズム)

D問題
•

広げる時のコストは、O(1)の計算量で計算することが

可能。
•

それぞれのマーブルの移動距離は、中央で区切ると
等差数列になるため、足し算が可能。
•

3,2,1,0,1,2,3,4,5,6みたいな配列になる。

©AtCoder Inc. All rights reserved.

99
D問題
•

処理(アルゴリズム)

そもそも、部分点2と同じ並べ方をまず試してみて、

それが収まるなら、探索する必要はない。

©AtCoder Inc. All rights reserved.

100
D問題
•

処理(アルゴリズム)

そもそも、部分点2と同じ並べ方をまず試してみて、

それが収まるなら、その解を採用すれば良いので、探
索する必要はない。
•

収まらないなら、限界まで中央に寄せてあげれば良い
ので、こちらも探索する必要はない。

©AtCoder Inc. All rights reserved.

101
D問題

処理(アルゴリズム)

•

緑が中心だとダメな例!

•

緑・赤が多くて、青が少ない場合。

©AtCoder Inc. All rights reserved.

102
D問題

処理(アルゴリズム)

•

緑が中心だとダメな例!

•

緑・赤が多くて、青が少ない場合。

•

赤を跳ね飛ばすと、赤を大量に移動させないといけな
くなってしまう。

©AtCoder Inc. All rights reserved.

103
D問題

処理(アルゴリズム)

•

緑が中心だとダメな例!

•

緑・赤が多くて、青が少ない場合。

•

赤を跳ね飛ばすと、赤を大量に移動させないといけな
くなってしまう。→緑を右に移動してあげないといけ
ない!

©AtCoder Inc. All rights reserved.

104
D問題

処理(アルゴリズム)

•

解法2 動的計画法を使おう!

•

左の箱から順番に、「赤を置く」「緑を置く」「青を
置く」「置かない」の4通りの全探索が考えられる。

•

範囲は適当に-1000から+1000の箱までやるとして、
2000回程度の分岐

•

このまま全探索すると、4^2000程度の計算量
•

これを、動的計画法orメモ化再帰をしてあげること
により、解いてあげる。

©AtCoder Inc. All rights reserved.

105
D問題
•

処理(アルゴリズム)

まず、一番左に対して4つの分岐

©AtCoder Inc. All rights reserved.

106
D問題
•

処理(アルゴリズム)

まず、一番左に対して4つの分岐

©AtCoder Inc. All rights reserved.

107
D問題

処理(アルゴリズム)

•

動的計画法・メモ化再帰とは?

•

一度計算したものを、二度計算しなかったり、同じも
のを纏めて計算してあげることにより、計算量を大幅
に削減してあげるテクニック

©AtCoder Inc. All rights reserved.

108
D問題
•

処理(アルゴリズム)

今回の場合は、左から順番に探索してあげるとして、

•
•

赤いマーブルがいくつ残っているか

•

緑のマーブルがいくつ残っているか

•
•

どの箱を見ているか

青のマーブルがいくつ残っているか

しか状態が存在しない。

©AtCoder Inc. All rights reserved.

109
D問題

処理(アルゴリズム)

•

動的計画法の場合

•

適当な4次元配列dpを用意する

•

dp[今見ている場所][赤の残り数][緑の残り数][青の残り
数]
•

これに対して、「この状況になるための最小の移動
数」を格納してあげるような、計算の省略を行う。

©AtCoder Inc. All rights reserved.

110
D問題

処理(アルゴリズム)

•

深さ優先探索を利用したメモ化再帰の場合

•

int dfs(今見ている場所,赤の残り数,緑の残り数,青の残り
数)のような再帰関数を作る。
•

返り値は、その先で全てのマーブルを配置するため
に必要な移動数

©AtCoder Inc. All rights reserved.

111
D問題
•

処理(アルゴリズム)

このように動的計画法・メモ化再帰を行うと、それぞ

れの状態数は、2000 * 300 * 300 * 300程度存在し、そ
れぞれに対して分岐の数が4つ。
•

これでは計算量が大きすぎる!

•

もう少し工夫をしてあげる必要がある。

©AtCoder Inc. All rights reserved.

112
D問題
•

処理(アルゴリズム)

考察をすることで、計算量を削減しよう!

•

先ほどは、「赤を置く」「緑を置く」「青を置く」
の3通りの置き方を考慮していた。

•

しかし、左から順番に、赤・緑・青と並ぶのが自然
であり、赤が置けるなら緑・青を置く必要はない
し、緑が置けるなら青を置く必要はない。(今回の
問題設定では出来ない!)

•

つまり、分岐の数を4つから2つ(置く、置かない)
に減らせる!
©AtCoder Inc. All rights reserved.

113
D問題
•

処理(アルゴリズム)

さらに、置くマーブルの順番を決めてしまえば、それ

ぞれのマーブルの個数でなく、全てのマーブルの残り
個数の和だけ覚えておけば、次に置くのはどのマーブ
ルかを求めることが出来る!
•

残りマーブルの状態数が、300 ^ 3から、300 * 3に
削減できる!

•

これなら制限時間内に解くことが可能となる

©AtCoder Inc. All rights reserved.

114
D問題

処理(アルゴリズム)

•

動的計画法の場合

•

適当な2次元配列dpを用意する

•

dp[今見ている場所][マーブルの残り数]
•

これに対して、「この状況になるための最小の移動
数」を格納してあげるような、計算の省略を行う。

•

マーブルの残り数に対して、移動量の計算が変わる
ので注意!

©AtCoder Inc. All rights reserved.

115
D問題

処理(アルゴリズム)

•

深さ優先探索を利用したメモ化再帰の場合

•

int dfs(今見ている場所,マーブルの残り数)のような再帰
関数を作る。
•

返り値は、その先で全てのマーブルを配置するため
に必要な移動数

•

こちらもマーブルの残り数から、R,G,Bどのマーブ
ルを使うか求める必要があるので注意。

©AtCoder Inc. All rights reserved.

116
D問題
•

処理(アルゴリズム)

解法3 最小費用流を使おう!(想定外でした。)

•

Komakiさんの解法からのアイデアです。

•

http://abc004.contest.atcoder.jp/submissions/132198

©AtCoder Inc. All rights reserved.

117
処理(アルゴリズム)

D問題
•

こんな感じでグラフを作る

•

辺には容量と重みを持たせる

(1, -100から箱の距離)
(R,0)
S

(1,0)
(1,0)

(G,0)
T

(1,0)
(B,0)

(1,0)
©AtCoder Inc. All rights reserved.

118
処理(アルゴリズム)

D問題
•

こんな感じでグラフを作る

•
•

辺には容量と重みを持たせる

このグラフの最小費用流を求める!
(1, -100から箱の距離)
(R,0)

(1,0)
(1,0)

(G,0)
(1,0)
(B,0)

(1,0)
©AtCoder Inc. All rights reserved.

119
処理(アルゴリズム)

D問題
•

最小費用流って?

•

グラフ(丸と矢印で構成されたさっきの図みたいな
もの)に関する有名なアルゴリズム

•

辺に、「容量」「重み」を持つグラフに対して、始
点から終点までフローを流す。
•

各辺には、辺の容量の分だけフローを流すこと
が可能であり、流すごとに重み分のコストがか
かる。

•

必要なフローを流すために必要なコストの最小値を
求めるアルゴリズム。 rights reserved.
©AtCoder Inc. All

120
D問題
•

処理(アルゴリズム)

最小費用流の解き方

•

グラフを作ったら、ダイクストラで頑張る!

•

ダイクストラで1つのフローを流し終えたら、逆の
辺を作る。

•

フローが流せなくなるまでダイクストラを繰り返
す!

•

詳しくはググってね!

©AtCoder Inc. All rights reserved.

121

Contenu connexe

Tendances

AtCoder Beginner Contest 033 解説
AtCoder Beginner Contest 033 解説AtCoder Beginner Contest 033 解説
AtCoder Beginner Contest 033 解説AtCoder Inc.
 
AtCoder Beginner Contest 016 解説
AtCoder Beginner Contest 016 解説AtCoder Beginner Contest 016 解説
AtCoder Beginner Contest 016 解説AtCoder Inc.
 
AtCoder Beginner Contest 024 解説
AtCoder Beginner Contest 024 解説AtCoder Beginner Contest 024 解説
AtCoder Beginner Contest 024 解説AtCoder Inc.
 
AtCoder Beginner Contest 034 解説
AtCoder Beginner Contest 034 解説AtCoder Beginner Contest 034 解説
AtCoder Beginner Contest 034 解説AtCoder Inc.
 
AtCoder Beginner Contest 029 解説
AtCoder Beginner Contest 029 解説AtCoder Beginner Contest 029 解説
AtCoder Beginner Contest 029 解説AtCoder Inc.
 
AtCoder Regular Contest 016 解説
AtCoder Regular Contest 016 解説AtCoder Regular Contest 016 解説
AtCoder Regular Contest 016 解説AtCoder Inc.
 
AtCoder Regular Contest 039 解説
AtCoder Regular Contest 039 解説AtCoder Regular Contest 039 解説
AtCoder Regular Contest 039 解説AtCoder Inc.
 
AtCoder Beginner Contest 017 解説
AtCoder Beginner Contest 017 解説AtCoder Beginner Contest 017 解説
AtCoder Beginner Contest 017 解説AtCoder Inc.
 
AtCoder Beginner Contest 012 解説
AtCoder Beginner Contest 012 解説AtCoder Beginner Contest 012 解説
AtCoder Beginner Contest 012 解説AtCoder Inc.
 
AtCoder Beginner Contest 015 解説
AtCoder Beginner Contest 015 解説AtCoder Beginner Contest 015 解説
AtCoder Beginner Contest 015 解説AtCoder Inc.
 
AtCoder Beginner Contest 028 解説
AtCoder Beginner Contest 028 解説AtCoder Beginner Contest 028 解説
AtCoder Beginner Contest 028 解説AtCoder Inc.
 
AtCoder Regular Contest 031 解説
AtCoder Regular Contest 031 解説AtCoder Regular Contest 031 解説
AtCoder Regular Contest 031 解説AtCoder Inc.
 
CODE FESTIVAL 2014 本選 解説
CODE FESTIVAL 2014 本選 解説CODE FESTIVAL 2014 本選 解説
CODE FESTIVAL 2014 本選 解説AtCoder Inc.
 
DDPC 2016 予選 解説
DDPC 2016 予選 解説DDPC 2016 予選 解説
DDPC 2016 予選 解説AtCoder Inc.
 
AtCoder Beginner Contest 018 解説
AtCoder Beginner Contest 018 解説AtCoder Beginner Contest 018 解説
AtCoder Beginner Contest 018 解説AtCoder Inc.
 
AtCoder Regular Contest 044 解説
AtCoder Regular Contest 044 解説AtCoder Regular Contest 044 解説
AtCoder Regular Contest 044 解説AtCoder Inc.
 

Tendances (20)

Abc009
Abc009Abc009
Abc009
 
AtCoder Beginner Contest 033 解説
AtCoder Beginner Contest 033 解説AtCoder Beginner Contest 033 解説
AtCoder Beginner Contest 033 解説
 
AtCoder Beginner Contest 016 解説
AtCoder Beginner Contest 016 解説AtCoder Beginner Contest 016 解説
AtCoder Beginner Contest 016 解説
 
AtCoder Beginner Contest 024 解説
AtCoder Beginner Contest 024 解説AtCoder Beginner Contest 024 解説
AtCoder Beginner Contest 024 解説
 
AtCoder Beginner Contest 034 解説
AtCoder Beginner Contest 034 解説AtCoder Beginner Contest 034 解説
AtCoder Beginner Contest 034 解説
 
abc032
abc032abc032
abc032
 
AtCoder Beginner Contest 029 解説
AtCoder Beginner Contest 029 解説AtCoder Beginner Contest 029 解説
AtCoder Beginner Contest 029 解説
 
AtCoder Regular Contest 016 解説
AtCoder Regular Contest 016 解説AtCoder Regular Contest 016 解説
AtCoder Regular Contest 016 解説
 
AtCoder Regular Contest 039 解説
AtCoder Regular Contest 039 解説AtCoder Regular Contest 039 解説
AtCoder Regular Contest 039 解説
 
AtCoder Beginner Contest 017 解説
AtCoder Beginner Contest 017 解説AtCoder Beginner Contest 017 解説
AtCoder Beginner Contest 017 解説
 
AtCoder Beginner Contest 012 解説
AtCoder Beginner Contest 012 解説AtCoder Beginner Contest 012 解説
AtCoder Beginner Contest 012 解説
 
AtCoder Beginner Contest 015 解説
AtCoder Beginner Contest 015 解説AtCoder Beginner Contest 015 解説
AtCoder Beginner Contest 015 解説
 
AtCoder Beginner Contest 028 解説
AtCoder Beginner Contest 028 解説AtCoder Beginner Contest 028 解説
AtCoder Beginner Contest 028 解説
 
AtCoder Regular Contest 031 解説
AtCoder Regular Contest 031 解説AtCoder Regular Contest 031 解説
AtCoder Regular Contest 031 解説
 
CODE FESTIVAL 2014 本選 解説
CODE FESTIVAL 2014 本選 解説CODE FESTIVAL 2014 本選 解説
CODE FESTIVAL 2014 本選 解説
 
abc027
abc027abc027
abc027
 
abc031
abc031abc031
abc031
 
DDPC 2016 予選 解説
DDPC 2016 予選 解説DDPC 2016 予選 解説
DDPC 2016 予選 解説
 
AtCoder Beginner Contest 018 解説
AtCoder Beginner Contest 018 解説AtCoder Beginner Contest 018 解説
AtCoder Beginner Contest 018 解説
 
AtCoder Regular Contest 044 解説
AtCoder Regular Contest 044 解説AtCoder Regular Contest 044 解説
AtCoder Regular Contest 044 解説
 

Similaire à AtCoder Beginner Contest 004 解説

6万行の TypeScript 移行とその後
6万行の TypeScript 移行とその後6万行の TypeScript 移行とその後
6万行の TypeScript 移行とその後Shingo Sasaki
 
AtCoder Beginner Contest 008 解説
AtCoder Beginner Contest 008 解説AtCoder Beginner Contest 008 解説
AtCoder Beginner Contest 008 解説AtCoder Inc.
 
AtCoder Beginner Contest 030 解説
AtCoder Beginner Contest 030 解説AtCoder Beginner Contest 030 解説
AtCoder Beginner Contest 030 解説AtCoder Inc.
 
Quiznowを支える技術 #yapcasia
Quiznowを支える技術 #yapcasiaQuiznowを支える技術 #yapcasia
Quiznowを支える技術 #yapcasiaYosuke Furukawa
 
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第2回 ‟変数と型„
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第2回 ‟変数と型„【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第2回 ‟変数と型„
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第2回 ‟変数と型„和弘 井之上
 
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強Kiyoshi Ogawa
 
はじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタはじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタSatoyuki Tsukano
 
受動部品のスパイスモデル と シミュレーション
受動部品のスパイスモデルとシミュレーション受動部品のスパイスモデルとシミュレーション
受動部品のスパイスモデル と シミュレーションTsuyoshi Horigome
 
受動部品のスパイスモデル と シミュレーション
受動部品のスパイスモデルとシミュレーション受動部品のスパイスモデルとシミュレーション
受動部品のスパイスモデル と シミュレーションTsuyoshi Horigome
 
実例Javaトラブルシューティング! 〜稼働中のシステムを立て直した半年間の軌跡
実例Javaトラブルシューティング! 〜稼働中のシステムを立て直した半年間の軌跡実例Javaトラブルシューティング! 〜稼働中のシステムを立て直した半年間の軌跡
実例Javaトラブルシューティング! 〜稼働中のシステムを立て直した半年間の軌跡心 谷本
 
Javascript入門-デジタル時計を作りながらJavaScriptを学ぼう-
Javascript入門-デジタル時計を作りながらJavaScriptを学ぼう-Javascript入門-デジタル時計を作りながらJavaScriptを学ぼう-
Javascript入門-デジタル時計を作りながらJavaScriptを学ぼう-Yossy Taka
 
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)NTT DATA Technology & Innovation
 
iOSにおけるコードレビューを一歩先へ進める
iOSにおけるコードレビューを一歩先へ進めるiOSにおけるコードレビューを一歩先へ進める
iOSにおけるコードレビューを一歩先へ進めるShunsuke Maeda
 
Indeedなう 予選A 解説
Indeedなう 予選A 解説Indeedなう 予選A 解説
Indeedなう 予選A 解説AtCoder Inc.
 
マイクロサービスにおけるテスト自動化 with Karate
マイクロサービスにおけるテスト自動化 with Karateマイクロサービスにおけるテスト自動化 with Karate
マイクロサービスにおけるテスト自動化 with KarateTakanori Suzuki
 
「C言語規格&MISRA-C:みんなで楽しいCプログラミング」NGK2013B名古屋合同懇親会2013忘年会昼の部
「C言語規格&MISRA-C:みんなで楽しいCプログラミング」NGK2013B名古屋合同懇親会2013忘年会昼の部「C言語規格&MISRA-C:みんなで楽しいCプログラミング」NGK2013B名古屋合同懇親会2013忘年会昼の部
「C言語規格&MISRA-C:みんなで楽しいCプログラミング」NGK2013B名古屋合同懇親会2013忘年会昼の部Kiyoshi Ogawa
 
TokyoR24 - PerformanceRvsC#
TokyoR24 - PerformanceRvsC#TokyoR24 - PerformanceRvsC#
TokyoR24 - PerformanceRvsC#ta2c
 
C++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISるC++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISるHideyuki Tanaka
 

Similaire à AtCoder Beginner Contest 004 解説 (20)

PHPコアから読み解くPHP5.5
PHPコアから読み解くPHP5.5PHPコアから読み解くPHP5.5
PHPコアから読み解くPHP5.5
 
6万行の TypeScript 移行とその後
6万行の TypeScript 移行とその後6万行の TypeScript 移行とその後
6万行の TypeScript 移行とその後
 
AtCoder Beginner Contest 008 解説
AtCoder Beginner Contest 008 解説AtCoder Beginner Contest 008 解説
AtCoder Beginner Contest 008 解説
 
AtCoder Beginner Contest 030 解説
AtCoder Beginner Contest 030 解説AtCoder Beginner Contest 030 解説
AtCoder Beginner Contest 030 解説
 
Quiznowを支える技術 #yapcasia
Quiznowを支える技術 #yapcasiaQuiznowを支える技術 #yapcasia
Quiznowを支える技術 #yapcasia
 
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第2回 ‟変数と型„
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第2回 ‟変数と型„【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第2回 ‟変数と型„
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第2回 ‟変数と型„
 
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強
 
はじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタはじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタ
 
受動部品のスパイスモデル と シミュレーション
受動部品のスパイスモデルとシミュレーション受動部品のスパイスモデルとシミュレーション
受動部品のスパイスモデル と シミュレーション
 
受動部品のスパイスモデル と シミュレーション
受動部品のスパイスモデルとシミュレーション受動部品のスパイスモデルとシミュレーション
受動部品のスパイスモデル と シミュレーション
 
実例Javaトラブルシューティング! 〜稼働中のシステムを立て直した半年間の軌跡
実例Javaトラブルシューティング! 〜稼働中のシステムを立て直した半年間の軌跡実例Javaトラブルシューティング! 〜稼働中のシステムを立て直した半年間の軌跡
実例Javaトラブルシューティング! 〜稼働中のシステムを立て直した半年間の軌跡
 
Klocworkのご紹介
Klocworkのご紹介Klocworkのご紹介
Klocworkのご紹介
 
Javascript入門-デジタル時計を作りながらJavaScriptを学ぼう-
Javascript入門-デジタル時計を作りながらJavaScriptを学ぼう-Javascript入門-デジタル時計を作りながらJavaScriptを学ぼう-
Javascript入門-デジタル時計を作りながらJavaScriptを学ぼう-
 
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
 
iOSにおけるコードレビューを一歩先へ進める
iOSにおけるコードレビューを一歩先へ進めるiOSにおけるコードレビューを一歩先へ進める
iOSにおけるコードレビューを一歩先へ進める
 
Indeedなう 予選A 解説
Indeedなう 予選A 解説Indeedなう 予選A 解説
Indeedなう 予選A 解説
 
マイクロサービスにおけるテスト自動化 with Karate
マイクロサービスにおけるテスト自動化 with Karateマイクロサービスにおけるテスト自動化 with Karate
マイクロサービスにおけるテスト自動化 with Karate
 
「C言語規格&MISRA-C:みんなで楽しいCプログラミング」NGK2013B名古屋合同懇親会2013忘年会昼の部
「C言語規格&MISRA-C:みんなで楽しいCプログラミング」NGK2013B名古屋合同懇親会2013忘年会昼の部「C言語規格&MISRA-C:みんなで楽しいCプログラミング」NGK2013B名古屋合同懇親会2013忘年会昼の部
「C言語規格&MISRA-C:みんなで楽しいCプログラミング」NGK2013B名古屋合同懇親会2013忘年会昼の部
 
TokyoR24 - PerformanceRvsC#
TokyoR24 - PerformanceRvsC#TokyoR24 - PerformanceRvsC#
TokyoR24 - PerformanceRvsC#
 
C++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISるC++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISる
 

Plus de AtCoder Inc.

AtCoderに毎回参加したくなる仕組み
AtCoderに毎回参加したくなる仕組みAtCoderに毎回参加したくなる仕組み
AtCoderに毎回参加したくなる仕組みAtCoder Inc.
 
Square869120 contest #2
Square869120 contest #2Square869120 contest #2
Square869120 contest #2AtCoder Inc.
 
AtCoder Beginner Contest 035 解説
AtCoder Beginner Contest 035 解説AtCoder Beginner Contest 035 解説
AtCoder Beginner Contest 035 解説AtCoder 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.
 
AtCoder Regular Contest 048
AtCoder Regular Contest 048AtCoder Regular Contest 048
AtCoder Regular Contest 048AtCoder Inc.
 
MUJINプログラミングチャレンジ2016 解説
MUJINプログラミングチャレンジ2016 解説MUJINプログラミングチャレンジ2016 解説
MUJINプログラミングチャレンジ2016 解説AtCoder Inc.
 
CODE FESTIVAL 2015 沖縄ツアー 解説
CODE FESTIVAL 2015 沖縄ツアー 解説CODE FESTIVAL 2015 沖縄ツアー 解説
CODE FESTIVAL 2015 沖縄ツアー 解説AtCoder Inc.
 
AtCoder Regular Contest 046
AtCoder Regular Contest 046AtCoder Regular Contest 046
AtCoder Regular Contest 046AtCoder 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.
 
天下一プログラマーコンテスト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.
 
天下一プログラマーコンテスト2015 予選A E問題 解説
天下一プログラマーコンテスト2015 予選A E問題 解説天下一プログラマーコンテスト2015 予選A E問題 解説
天下一プログラマーコンテスト2015 予選A E問題 解説AtCoder Inc.
 
AtCoder Regular Contest 042 解説
AtCoder Regular Contest 042 解説AtCoder Regular Contest 042 解説
AtCoder Regular Contest 042 解説AtCoder Inc.
 

Plus de AtCoder Inc. (20)

TCO2017R1
TCO2017R1TCO2017R1
TCO2017R1
 
AtCoderに毎回参加したくなる仕組み
AtCoderに毎回参加したくなる仕組みAtCoderに毎回参加したくなる仕組み
AtCoderに毎回参加したくなる仕組み
 
Square869120 contest #2
Square869120 contest #2Square869120 contest #2
Square869120 contest #2
 
AtCoder Beginner Contest 035 解説
AtCoder Beginner Contest 035 解説AtCoder Beginner Contest 035 解説
AtCoder Beginner Contest 035 解説
 
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 解説
 
AtCoder Regular Contest 048
AtCoder Regular Contest 048AtCoder Regular Contest 048
AtCoder Regular Contest 048
 
MUJINプログラミングチャレンジ2016 解説
MUJINプログラミングチャレンジ2016 解説MUJINプログラミングチャレンジ2016 解説
MUJINプログラミングチャレンジ2016 解説
 
arc047
arc047arc047
arc047
 
CODE FESTIVAL 2015 沖縄ツアー 解説
CODE FESTIVAL 2015 沖縄ツアー 解説CODE FESTIVAL 2015 沖縄ツアー 解説
CODE FESTIVAL 2015 沖縄ツアー 解説
 
AtCoder Regular Contest 046
AtCoder Regular Contest 046AtCoder Regular Contest 046
AtCoder Regular Contest 046
 
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 解説
 
天下一プログラマーコンテスト2015 予選B 解説
天下一プログラマーコンテスト2015 予選B 解説天下一プログラマーコンテスト2015 予選B 解説
天下一プログラマーコンテスト2015 予選B 解説
 
AtCoder Regular Contest 043 解説
AtCoder Regular Contest 043 解説AtCoder Regular Contest 043 解説
AtCoder Regular Contest 043 解説
 
天下一プログラマーコンテスト2015 予選A E問題 解説
天下一プログラマーコンテスト2015 予選A E問題 解説天下一プログラマーコンテスト2015 予選A E問題 解説
天下一プログラマーコンテスト2015 予選A E問題 解説
 
AtCoder Regular Contest 042 解説
AtCoder Regular Contest 042 解説AtCoder Regular Contest 042 解説
AtCoder Regular Contest 042 解説
 

Dernier

My Inspire High Award 2024「他者と自分、対立を防ぐには?」
My Inspire High Award 2024「他者と自分、対立を防ぐには?」My Inspire High Award 2024「他者と自分、対立を防ぐには?」
My Inspire High Award 2024「他者と自分、対立を防ぐには?」inspirehighstaff03
 
My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」
My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」
My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」inspirehighstaff03
 
My Inspire High Award 2024「なぜ議会への関心が低いのか?」
My Inspire High Award 2024「なぜ議会への関心が低いのか?」My Inspire High Award 2024「なぜ議会への関心が低いのか?」
My Inspire High Award 2024「なぜ議会への関心が低いのか?」inspirehighstaff03
 
What I did before opening my business..pdf
What I did before opening my business..pdfWhat I did before opening my business..pdf
What I did before opening my business..pdfoganekyokoi
 
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」inspirehighstaff03
 
My Inspire High Award 2024      「家族とは何か」
My Inspire High Award 2024      「家族とは何か」My Inspire High Award 2024      「家族とは何か」
My Inspire High Award 2024      「家族とは何か」inspirehighstaff03
 
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」inspirehighstaff03
 
My Inspire High Award 2024「老いることは不幸なこと?」
My Inspire High Award 2024「老いることは不幸なこと?」My Inspire High Award 2024「老いることは不幸なこと?」
My Inspire High Award 2024「老いることは不幸なこと?」inspirehighstaff03
 
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」inspirehighstaff03
 
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」inspirehighstaff03
 
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slidessusere0a682
 
My Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdf
My Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdfMy Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdf
My Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdfinspirehighstaff03
 
My Inspire High Award 2024 「AIと仲良くなるには?」
My Inspire High Award 2024 「AIと仲良くなるには?」My Inspire High Award 2024 「AIと仲良くなるには?」
My Inspire High Award 2024 「AIと仲良くなるには?」inspirehighstaff03
 
Divorce agreements in administrative work.pdf
Divorce agreements in administrative work.pdfDivorce agreements in administrative work.pdf
Divorce agreements in administrative work.pdfoganekyokoi
 
3年前期 交通基盤工学 第一回 ガイダンス 交通基盤工学の概要  パワーポイント
3年前期 交通基盤工学 第一回 ガイダンス 交通基盤工学の概要  パワーポイント3年前期 交通基盤工学 第一回 ガイダンス 交通基盤工学の概要  パワーポイント
3年前期 交通基盤工学 第一回 ガイダンス 交通基盤工学の概要  パワーポイントshu1108hina1020
 
My Inspire High Award 2024 「本当の『悪者』って何?」
My Inspire High Award 2024 「本当の『悪者』って何?」My Inspire High Award 2024 「本当の『悪者』って何?」
My Inspire High Award 2024 「本当の『悪者』って何?」inspirehighstaff03
 
My Inspire High Award 2024  「正義って存在するの?」
My Inspire High Award 2024  「正義って存在するの?」My Inspire High Award 2024  「正義って存在するの?」
My Inspire High Award 2024  「正義って存在するの?」inspirehighstaff03
 
KARAPATANG PANTAO.pptxhrhrhrhrhrhrhrhrhr
KARAPATANG PANTAO.pptxhrhrhrhrhrhrhrhrhrKARAPATANG PANTAO.pptxhrhrhrhrhrhrhrhrhr
KARAPATANG PANTAO.pptxhrhrhrhrhrhrhrhrhrRodolfFernandez1
 
Establishment and operation of medical corporations.pdf
Establishment and operation of medical corporations.pdfEstablishment and operation of medical corporations.pdf
Establishment and operation of medical corporations.pdfoganekyokoi
 
My Inspire High Award 2024    「孤独は敵なのか?」
My Inspire High Award 2024    「孤独は敵なのか?」My Inspire High Award 2024    「孤独は敵なのか?」
My Inspire High Award 2024    「孤独は敵なのか?」inspirehighstaff03
 

Dernier (20)

My Inspire High Award 2024「他者と自分、対立を防ぐには?」
My Inspire High Award 2024「他者と自分、対立を防ぐには?」My Inspire High Award 2024「他者と自分、対立を防ぐには?」
My Inspire High Award 2024「他者と自分、対立を防ぐには?」
 
My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」
My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」
My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」
 
My Inspire High Award 2024「なぜ議会への関心が低いのか?」
My Inspire High Award 2024「なぜ議会への関心が低いのか?」My Inspire High Award 2024「なぜ議会への関心が低いのか?」
My Inspire High Award 2024「なぜ議会への関心が低いのか?」
 
What I did before opening my business..pdf
What I did before opening my business..pdfWhat I did before opening my business..pdf
What I did before opening my business..pdf
 
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」
 
My Inspire High Award 2024      「家族とは何か」
My Inspire High Award 2024      「家族とは何か」My Inspire High Award 2024      「家族とは何か」
My Inspire High Award 2024      「家族とは何か」
 
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」
 
My Inspire High Award 2024「老いることは不幸なこと?」
My Inspire High Award 2024「老いることは不幸なこと?」My Inspire High Award 2024「老いることは不幸なこと?」
My Inspire High Award 2024「老いることは不幸なこと?」
 
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」
 
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」
 
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
 
My Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdf
My Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdfMy Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdf
My Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdf
 
My Inspire High Award 2024 「AIと仲良くなるには?」
My Inspire High Award 2024 「AIと仲良くなるには?」My Inspire High Award 2024 「AIと仲良くなるには?」
My Inspire High Award 2024 「AIと仲良くなるには?」
 
Divorce agreements in administrative work.pdf
Divorce agreements in administrative work.pdfDivorce agreements in administrative work.pdf
Divorce agreements in administrative work.pdf
 
3年前期 交通基盤工学 第一回 ガイダンス 交通基盤工学の概要  パワーポイント
3年前期 交通基盤工学 第一回 ガイダンス 交通基盤工学の概要  パワーポイント3年前期 交通基盤工学 第一回 ガイダンス 交通基盤工学の概要  パワーポイント
3年前期 交通基盤工学 第一回 ガイダンス 交通基盤工学の概要  パワーポイント
 
My Inspire High Award 2024 「本当の『悪者』って何?」
My Inspire High Award 2024 「本当の『悪者』って何?」My Inspire High Award 2024 「本当の『悪者』って何?」
My Inspire High Award 2024 「本当の『悪者』って何?」
 
My Inspire High Award 2024  「正義って存在するの?」
My Inspire High Award 2024  「正義って存在するの?」My Inspire High Award 2024  「正義って存在するの?」
My Inspire High Award 2024  「正義って存在するの?」
 
KARAPATANG PANTAO.pptxhrhrhrhrhrhrhrhrhr
KARAPATANG PANTAO.pptxhrhrhrhrhrhrhrhrhrKARAPATANG PANTAO.pptxhrhrhrhrhrhrhrhrhr
KARAPATANG PANTAO.pptxhrhrhrhrhrhrhrhrhr
 
Establishment and operation of medical corporations.pdf
Establishment and operation of medical corporations.pdfEstablishment and operation of medical corporations.pdf
Establishment and operation of medical corporations.pdf
 
My Inspire High Award 2024    「孤独は敵なのか?」
My Inspire High Award 2024    「孤独は敵なのか?」My Inspire High Award 2024    「孤独は敵なのか?」
My Inspire High Award 2024    「孤独は敵なのか?」
 

AtCoder Beginner Contest 004 解説