SlideShare uma empresa Scribd logo
1 de 13
Baixar para ler offline
金大アルゴリズム勉強会
第2回 6/5
twitter : @algorithm_ku
最初に
「AtCoderってなんのことですか?」という方は前回資料参照
今日やること
• AtCoder Beginner Contest #003
• B - AtCoderトランプ
• C - AtCoderプログラミング講座
B問題 文字列の比較
• 2つの文字列が等しいかどうかを調べる
• 文字が「@」だったら「a,t,c,o,d,e,r」のどれかに
変換可能
B問題の肝
• 一文字ずつ比較していく
• 単純に同じ文字だったらOK
• 片方が@のときにどのように処理するか?
C問題 最大値の調査
• N個の数字があり、K個選べる
• 選んだK個の値を1つずつ計算
• 次の値 = (現在の値 + 選んだ値) / 2
• 結果が最大になるパターンのときの値を調べる
C問題ついて
全パターン調べてみた
public static double calcMax(int count,	
	 	 ArrayList<Integer> remainder, double result) {	
	 if (count == k) {	
	 	 return result;	
	 }	
	 double maxResult = 0;	
	 for (int i = 0; i < remainder.size(); i++) {	
	 	 ArrayList<Integer> tmpRem = new ArrayList<>(remainder);	
	 	 double tmpResult = ((tmpRem.get(i) + result) / 2.0);	
	 	 tmpRem.remove(i);	
	 	 maxResult = Math.max(maxResult,	
	 	 	 calcMax(count + 1, tmpRem, tmpResult));	
	 }	
	 return maxResult;	
}
結果
• Javaで再帰処理を使ってK個選ぶ全パターンを計算
• N = 12, K = 12のとき
!
!
• 約34秒かかった
時間制限
• 競技プログラミングでは大抵、時間制限がある
• 今回の問題では2秒以内
• それ以上かかると TLE で不正解
• 全パターンやると処理が間に合わない!
ちなみに
• N = 100, K = 100 のとき 100! パターン
• N = 12, K = 12 のとき約34秒
• 100! = 9.3 * 10^157, 12! = 4.8 * 10^8
• この場合にかかる時間は単純計算で…
約 2.1 * 10^143 (年)
処理を短く
• 処理をまとめたり、時間のかからない解き方にする
• 規則性を見つけて、特定のパターンだけ計算する
• コンパイラ言語を使う

Mais conteúdo relacionado

Destaque (19)

Tema 3 cono
Tema 3 conoTema 3 cono
Tema 3 cono
 
lune 2
lune 2lune 2
lune 2
 
Capsicum - Diploma in Patisserie
Capsicum - Diploma in PatisserieCapsicum - Diploma in Patisserie
Capsicum - Diploma in Patisserie
 
Mediakit 2012
Mediakit 2012Mediakit 2012
Mediakit 2012
 
ipt valuthur
ipt valuthuript valuthur
ipt valuthur
 
cover letter
cover lettercover letter
cover letter
 
Abdul Azim Testimonial letter 3.2.16
Abdul Azim Testimonial letter 3.2.16Abdul Azim Testimonial letter 3.2.16
Abdul Azim Testimonial letter 3.2.16
 
Estadistica 10 crreccion
Estadistica 10 crreccionEstadistica 10 crreccion
Estadistica 10 crreccion
 
Tutorial de publicacao no site escolas decoe
Tutorial de publicacao no site escolas decoeTutorial de publicacao no site escolas decoe
Tutorial de publicacao no site escolas decoe
 
Mr Katz
Mr KatzMr Katz
Mr Katz
 
My resume
My resumeMy resume
My resume
 
Cuaderno caligrafia anaya 2
Cuaderno caligrafia anaya 2Cuaderno caligrafia anaya 2
Cuaderno caligrafia anaya 2
 
Educação fisica 2º periodo
Educação fisica 2º periodoEducação fisica 2º periodo
Educação fisica 2º periodo
 
IntervencióN Smh Aetic Sost Sevilla V2
IntervencióN Smh Aetic Sost Sevilla V2IntervencióN Smh Aetic Sost Sevilla V2
IntervencióN Smh Aetic Sost Sevilla V2
 
Oil%Gas Training FPSO
Oil%Gas Training FPSOOil%Gas Training FPSO
Oil%Gas Training FPSO
 
Treinamento+facial+l´bel
Treinamento+facial+l´belTreinamento+facial+l´bel
Treinamento+facial+l´bel
 
Exercícios LMIs
Exercícios LMIsExercícios LMIs
Exercícios LMIs
 
Coied2 encerramento proinov
Coied2 encerramento proinovCoied2 encerramento proinov
Coied2 encerramento proinov
 
新しい学びを創るデジタル教科書のかたちー学習者用デジタル教科書・教材等の機能の在り方の解説を中心に
新しい学びを創るデジタル教科書のかたちー学習者用デジタル教科書・教材等の機能の在り方の解説を中心に新しい学びを創るデジタル教科書のかたちー学習者用デジタル教科書・教材等の機能の在り方の解説を中心に
新しい学びを創るデジタル教科書のかたちー学習者用デジタル教科書・教材等の機能の在り方の解説を中心に
 

Semelhante a 金大アルゴリズム勉強会#002資料 (6)

130323 slide all
130323 slide all130323 slide all
130323 slide all
 
AtCoder Beginner Contest 008 解説
AtCoder Beginner Contest 008 解説AtCoder Beginner Contest 008 解説
AtCoder Beginner Contest 008 解説
 
CODE FESTIVAL 2014 本選 解説
CODE FESTIVAL 2014 本選 解説CODE FESTIVAL 2014 本選 解説
CODE FESTIVAL 2014 本選 解説
 
Pythonではじめる競技プログラミング
Pythonではじめる競技プログラミングPythonではじめる競技プログラミング
Pythonではじめる競技プログラミング
 
AtCoder Beginner Contest 028 解説
AtCoder Beginner Contest 028 解説AtCoder Beginner Contest 028 解説
AtCoder Beginner Contest 028 解説
 
プログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズムプログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズム
 

Mais de Takumi Murano (10)

モダンな感じでChrome Extension作ってみた
モダンな感じでChrome Extension作ってみたモダンな感じでChrome Extension作ってみた
モダンな感じでChrome Extension作ってみた
 
Dockerぐらし!
Dockerぐらし!Dockerぐらし!
Dockerぐらし!
 
金大アルゴリズム勉強会#007資料
金大アルゴリズム勉強会#007資料金大アルゴリズム勉強会#007資料
金大アルゴリズム勉強会#007資料
 
金大アルゴリズム勉強会#006資料
金大アルゴリズム勉強会#006資料金大アルゴリズム勉強会#006資料
金大アルゴリズム勉強会#006資料
 
Operator's Side
Operator's SideOperator's Side
Operator's Side
 
金大アルゴリズム勉強会#005資料
金大アルゴリズム勉強会#005資料金大アルゴリズム勉強会#005資料
金大アルゴリズム勉強会#005資料
 
金大アルゴリズム勉強会#004資料
金大アルゴリズム勉強会#004資料金大アルゴリズム勉強会#004資料
金大アルゴリズム勉強会#004資料
 
金大アルゴリズム勉強会#003資料
金大アルゴリズム勉強会#003資料金大アルゴリズム勉強会#003資料
金大アルゴリズム勉強会#003資料
 
金大アルゴリズム勉強会#001資料
金大アルゴリズム勉強会#001資料金大アルゴリズム勉強会#001資料
金大アルゴリズム勉強会#001資料
 
Lombok java
Lombok javaLombok java
Lombok java
 

金大アルゴリズム勉強会#002資料