Enviar búsqueda
Cargar
第21回アルゴリズム勉強会
•
2 recomendaciones
•
4,690 vistas
Yuuki Ono
Seguir
Ingeniería
Denunciar
Compartir
Denunciar
Compartir
1 de 82
Descargar ahora
Descargar para leer sin conexión
Recomendados
AtCoder Beginner Contest 021 解説
AtCoder Beginner Contest 021 解説
AtCoder Inc.
abc032
abc032
AtCoder Inc.
プログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズム
Takuya Akiba
ダブリング
ダブリング
satanic
Rolling Hashを殺す話
Rolling Hashを殺す話
Nagisa Eto
プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造
Takuya Akiba
AtCoder Beginner Contest 015 解説
AtCoder Beginner Contest 015 解説
AtCoder Inc.
勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは
Takuya Akiba
Recomendados
AtCoder Beginner Contest 021 解説
AtCoder Beginner Contest 021 解説
AtCoder Inc.
abc032
abc032
AtCoder Inc.
プログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズム
Takuya Akiba
ダブリング
ダブリング
satanic
Rolling Hashを殺す話
Rolling Hashを殺す話
Nagisa Eto
プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造
Takuya Akiba
AtCoder Beginner Contest 015 解説
AtCoder Beginner Contest 015 解説
AtCoder Inc.
勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは
Takuya Akiba
abc031
abc031
AtCoder Inc.
二部グラフの最小点被覆と最大安定集合と最小辺被覆の求め方
二部グラフの最小点被覆と最大安定集合と最小辺被覆の求め方
Kensuke Otsuki
AtCoder Regular Contest 039 解説
AtCoder Regular Contest 039 解説
AtCoder Inc.
最大流 (max flow)
最大流 (max flow)
HCPC: 北海道大学競技プログラミングサークル
最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解く
shindannin
AtCoder Beginner Contest 012 解説
AtCoder Beginner Contest 012 解説
AtCoder Inc.
AtCoder Regular Contest 038 解説
AtCoder Regular Contest 038 解説
AtCoder Inc.
Union find(素集合データ構造)
Union find(素集合データ構造)
AtCoder Inc.
目指せグラフマスター
目指せグラフマスター
HCPC: 北海道大学競技プログラミングサークル
AtCoder Beginner Contest 022 解説
AtCoder Beginner Contest 022 解説
AtCoder Inc.
AtCoder Beginner Contest 006 解説
AtCoder Beginner Contest 006 解説
AtCoder Inc.
様々な全域木問題
様々な全域木問題
tmaehara
AtCoder Regular Contest 031 解説
AtCoder Regular Contest 031 解説
AtCoder Inc.
AtCoder Regular Contest 037 解説
AtCoder Regular Contest 037 解説
AtCoder Inc.
AtCoder Beginner Contest 002 解説
AtCoder Beginner Contest 002 解説
AtCoder Inc.
双対性
双対性
Yoichi Iwata
Rolling hash
Rolling hash
HCPC: 北海道大学競技プログラミングサークル
プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~
Takuya Akiba
AtCoder Beginner Contest 028 解説
AtCoder Beginner Contest 028 解説
AtCoder Inc.
グラフネットワーク〜フロー&カット〜
グラフネットワーク〜フロー&カット〜
HCPC: 北海道大学競技プログラミングサークル
金大アルゴリズム勉強会#001資料
金大アルゴリズム勉強会#001資料
Takumi Murano
Yokozuna 日本語検索機能を評価しました
Yokozuna 日本語検索機能を評価しました
Takashi Sogabe
Más contenido relacionado
La actualidad más candente
abc031
abc031
AtCoder Inc.
二部グラフの最小点被覆と最大安定集合と最小辺被覆の求め方
二部グラフの最小点被覆と最大安定集合と最小辺被覆の求め方
Kensuke Otsuki
AtCoder Regular Contest 039 解説
AtCoder Regular Contest 039 解説
AtCoder Inc.
最大流 (max flow)
最大流 (max flow)
HCPC: 北海道大学競技プログラミングサークル
最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解く
shindannin
AtCoder Beginner Contest 012 解説
AtCoder Beginner Contest 012 解説
AtCoder Inc.
AtCoder Regular Contest 038 解説
AtCoder Regular Contest 038 解説
AtCoder Inc.
Union find(素集合データ構造)
Union find(素集合データ構造)
AtCoder Inc.
目指せグラフマスター
目指せグラフマスター
HCPC: 北海道大学競技プログラミングサークル
AtCoder Beginner Contest 022 解説
AtCoder Beginner Contest 022 解説
AtCoder Inc.
AtCoder Beginner Contest 006 解説
AtCoder Beginner Contest 006 解説
AtCoder Inc.
様々な全域木問題
様々な全域木問題
tmaehara
AtCoder Regular Contest 031 解説
AtCoder Regular Contest 031 解説
AtCoder Inc.
AtCoder Regular Contest 037 解説
AtCoder Regular Contest 037 解説
AtCoder Inc.
AtCoder Beginner Contest 002 解説
AtCoder Beginner Contest 002 解説
AtCoder Inc.
双対性
双対性
Yoichi Iwata
Rolling hash
Rolling hash
HCPC: 北海道大学競技プログラミングサークル
プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~
Takuya Akiba
AtCoder Beginner Contest 028 解説
AtCoder Beginner Contest 028 解説
AtCoder Inc.
グラフネットワーク〜フロー&カット〜
グラフネットワーク〜フロー&カット〜
HCPC: 北海道大学競技プログラミングサークル
La actualidad más candente
(20)
abc031
abc031
二部グラフの最小点被覆と最大安定集合と最小辺被覆の求め方
二部グラフの最小点被覆と最大安定集合と最小辺被覆の求め方
AtCoder Regular Contest 039 解説
AtCoder Regular Contest 039 解説
最大流 (max flow)
最大流 (max flow)
最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解く
AtCoder Beginner Contest 012 解説
AtCoder Beginner Contest 012 解説
AtCoder Regular Contest 038 解説
AtCoder Regular Contest 038 解説
Union find(素集合データ構造)
Union find(素集合データ構造)
目指せグラフマスター
目指せグラフマスター
AtCoder Beginner Contest 022 解説
AtCoder Beginner Contest 022 解説
AtCoder Beginner Contest 006 解説
AtCoder Beginner Contest 006 解説
様々な全域木問題
様々な全域木問題
AtCoder Regular Contest 031 解説
AtCoder Regular Contest 031 解説
AtCoder Regular Contest 037 解説
AtCoder Regular Contest 037 解説
AtCoder Beginner Contest 002 解説
AtCoder Beginner Contest 002 解説
双対性
双対性
Rolling hash
Rolling hash
プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~
AtCoder Beginner Contest 028 解説
AtCoder Beginner Contest 028 解説
グラフネットワーク〜フロー&カット〜
グラフネットワーク〜フロー&カット〜
Similar a 第21回アルゴリズム勉強会
金大アルゴリズム勉強会#001資料
金大アルゴリズム勉強会#001資料
Takumi Murano
Yokozuna 日本語検索機能を評価しました
Yokozuna 日本語検索機能を評価しました
Takashi Sogabe
T82 aoitan あおいたんのパズルを数学しましょうか_修正版
T82 aoitan あおいたんのパズルを数学しましょうか_修正版
Masami Yabushita
プログラミング勉強会
プログラミング勉強会
ssuser50bb47
わんくま勉強会東京#82 あおいたんのパズルを数学しましょうか
わんくま勉強会東京#82 あおいたんのパズルを数学しましょうか
Masami Yabushita
第3回BDD勉強会
第3回BDD勉強会
zakihaya
RSA鍵生成脆弱性ROCAの紹介
RSA鍵生成脆弱性ROCAの紹介
MITSUNARI Shigeo
パフォーマンスの良いGASの書き方 Best Practice
パフォーマンスの良いGASの書き方 Best Practice
啓介 大橋
AI入門「第3回:数学が苦手でも作って使えるKerasディープラーニング」【旧版】※新版あります
AI入門「第3回:数学が苦手でも作って使えるKerasディープラーニング」【旧版】※新版あります
fukuoka.ex
Q13
Q13
Masato Hommaru
Similar a 第21回アルゴリズム勉強会
(10)
金大アルゴリズム勉強会#001資料
金大アルゴリズム勉強会#001資料
Yokozuna 日本語検索機能を評価しました
Yokozuna 日本語検索機能を評価しました
T82 aoitan あおいたんのパズルを数学しましょうか_修正版
T82 aoitan あおいたんのパズルを数学しましょうか_修正版
プログラミング勉強会
プログラミング勉強会
わんくま勉強会東京#82 あおいたんのパズルを数学しましょうか
わんくま勉強会東京#82 あおいたんのパズルを数学しましょうか
第3回BDD勉強会
第3回BDD勉強会
RSA鍵生成脆弱性ROCAの紹介
RSA鍵生成脆弱性ROCAの紹介
パフォーマンスの良いGASの書き方 Best Practice
パフォーマンスの良いGASの書き方 Best Practice
AI入門「第3回:数学が苦手でも作って使えるKerasディープラーニング」【旧版】※新版あります
AI入門「第3回:数学が苦手でも作って使えるKerasディープラーニング」【旧版】※新版あります
Q13
Q13
第21回アルゴリズム勉強会
1.
第21回アルゴリズム勉強会 6月14日 @Cafe IKAGAWADO?
2.
アルゴリズム勉強会とは? • 勉強会のコンセプト - 知的好奇心を満たす -
技術力を高める(アイディア力) - 大学や社会人の垣根を超えた交流 - 知識やアルゴリズムを共有する場 を目指す • 競技プログラミング(AtCoder/TopCoder) の問題を中心に勉強します。
3.
自己紹介 " • Web系やAndroidアプリのプログラミング • Java/PHP/Python/JavaScript/C •
最近は Haskellを勉強中です。 " • TopCoder レーティング 1026 (グリーンコーダー) • Rank 5027 of 10087 3
4.
一応 こういうことはしませんので あしからず 4 スマホアプリ Webアプリ デザイン サービスや ハードウェア ビジネス的なお話
5.
やることは・・・ プログラミング 5 アルゴリズム
6.
アルゴリズムとは? 6 問題 アルゴリズム 答え 数値 とか 文字列 文字列 解法を考え、 プログラミングを行う
7.
競技プログラミングとは? • 決められた時間内に、条件に合うようにプログラムを作ります。 • 難しいアルゴリズムや、頭の体操のような問題があります。 " •
なるべく早く解くこと目指します。 7 もちろん、勉強会 ではのんびりといてください
8.
競技プログラミングをやっても 実用性がないんじゃない? 8
9.
No 9
10.
競技プログラミングのメリット " A. いままで実装するのが難しいと感じてた事が できるようになります。 B. 早く/速く実装することが出来ます。 C.
問題文をちゃんと読んで、 正しい(バグが少ない)実装をすることが出来ます。 D. デバッグや原因を調査する力が付きます。 10
11.
計算量? " わかりやすいように簡単例を出してます。 11
12.
1,2,3….,n の総和のプログラム 12 基本的に大丈夫だけど?
13.
1,2,3….,n の総和のプログラム 13
14.
14 O(n) O(1)
15.
有名な競技プログラミングサイト 15
16.
• TopCoder • 全世界で59万人が登録している。" •
SRM(Single Round Match)が有名、賞金がもらえるコンテストもある。 • 対応言語は、Java/C++/C#/VB/Python • レーティングがあり、そのレーティングの色が有名 • AtCoder • http://atcoder.jp/ • AtCoder社は、@chokudaiさん(高橋直大さん)が社長で TopCoderの解説本を書いていたり、プログラミングコンテストの賞金 などで有名。 • 日本語のプログラミングサイトで 多くの言語に対応している。 "
17.
• Codeforces • http://codeforces.com/ •
ロシアのプログラミングコンテストサイト、英語で参加可能、 TopCoderに比べて難しめの傾向があり、答えも唯一ではない問題もある。 " • AIZU ONLINE JUDGE • http://judge.u-aizu.ac.jp/onlinejudge/ • 会津大学が行っている競技プログラミングサイト 日本の大学が行っているが英語がおおい(日本語の問題もある) " • POJ • http://poj.org/ • 北京大学が行っているプログラミングコンテストサイト " • Google Code Jam • https://code.google.com/codejam/japan • Google社が行っているプログラミングコンテスト • 一年に一度行われる。
18.
参考図書 18
19.
最近注目される" 競技プログラミング 19 http://doda.jp/engineer/guide/yosoku/09_1.html
20.
勉強会の流れ みなさんコーディングをしてもらいます。 各自出来た方は、システムテストをしてください。 その後、みなさんのコードを発表してもらいます。
21.
コーディング環境 • 言語 (AtCoderが対応している言語) C,C++/C++11,C#,Java,D,PHP,Python2/3,Perl,Ruby, Haskell,Pascal,JavaScript,VB,OCaml,Scheme,Scala,Bash • POH(Paiza)の問題は以下の言語 Java,C,C++C#,PHP,Ruby,Python2,Perl " •
開発環境自由 • Eclipse/IntelliJ/VisualStudio/ SublimeText /ATOM・・ • 環境がなければ ideone などでもOK 21
22.
今日やること 1. ABC #009
A - 引越し作業 • http://abc009.contest.atcoder.jp/tasks/abc009_1 2. ABC #009 B - 心配性な富豪、ファミリーレストランに行く。 • http://abc009.contest.atcoder.jp/tasks/abc009_2 " 3. ARC #022 B - 細長いお菓子 • http://arc022.contest.atcoder.jp/tasks/arc022_2 4. Paiza オンライン ハッカソン Vol 1 • https://paiza.jp/poh/ec-campaign 22 初めての方は部分点は 取るように頑張ってください 部分点有り " しゃくとり法 というアルゴリズムをします 部分点有り
23.
注意事項 • 特別、休憩時間は取りません。 各自お好きなときに休憩時間をとってください。 (コーディングタイムと兼ねてます。) " • 参加費(会場使用費・ドリンク代)は500円となっております。 ドリンクバー形式になってますので、お好きに飲んでください •
TopCoderレーティング割が適用されます。 • グリーンコーダー 400円 • ブルーコーダー 200円 • イエローコーダー 以上 0円 23
24.
注意事項 • 後半になるにつれて難しくなってきます。 " • 自分の用事やもくもく何かしててもOKです。 " •
途中退出OKです。 24
25.
AtCoder チュートリアル 25
26.
AtCoder チュートリアル 26
27.
AtCoder チュートリアル 27
28.
AtCoder チュートリアル 28 所属は適当で なんなら 全角スペースで
29.
AtCoder チュートリアル 29
30.
AtCoder チュートリアル 30 問題文
31.
AtCoder チュートリアル 31 提出はこちらから
32.
AtCoder チュートリアル 32 http://abc009.contest.atcoder.jp/ tutorial#tutorial_chap_2
33.
AtCoder チュートリアル 33
34.
AtCoder チュートリアル AC になればOKです! 34
35.
AtCoder チュートリアル 35
36.
問題頑張ってください。 36
37.
「POH Vol.1」 などで検索! 37
38.
解説 38
39.
ARC #022 B
- 細長いお菓子 解説 39
40.
40 1 2 1
3 1 4 4
41.
41 1 2 1
3 1 4 4
42.
42 1 2 1
3 1 4 4
43.
43 1 2 1
3 1 4 4 2
44.
44 1 2 1
3 1 4 4
45.
45 1 2 1
3 1 4 4
46.
46 1 2 1
3 1 4 4
47.
47 1 2 1
3 1 4 4 3
48.
48 1 2 1
3 1 4 4
49.
49 1 2 1
3 1 4 4
50.
50 1 2 1
3 1 4 4 2
51.
これも解法のひとつです が・・99点になります " " " 最大O(n 2 ) かかります " 実際はもっと少ないけど 51
52.
O(n)で解きたい 52
53.
53 " " しゃくとり法
54.
実は、人間が考えるのと だいたい同じ 54
55.
味がチェックされたか どうか配列が必要 " " " 例えば boolean[] check=new boolean[10000+1] " 55
56.
56 1 2 1
3 1 4 4 check[1]=true
57.
57 1 2 1
3 1 4 4 check[2]=true
58.
58 1 2 1
3 1 4 4 2 check[1]=false
59.
59 1 2 1
3 1 4 4 check はそのままつかう jを戻さない(再利用する)
60.
60 1 2 1
3 1 4 4
61.
61 1 2 1
3 1 4 4 3
62.
62 1 2 1
3 1 4 4 2 jを戻さない(再利用する)
63.
63 1 2 1
3 1 4 4
64.
64 1 2 1
3 1 4 4
65.
65 1 2 1
3 1 4 4 3
66.
66 1 2 1
3 1 4 4
67.
67 1 2 1
3 1 4 4
68.
しゃくとり法の特徴 • 区間の値に対する状態を持つ必要がある(配列が望ましい) • 普通の2重ループと見せかけて、使いまわす •
j (右側)のインデックスをリセットしない • 区間の状態をリセットしない • 基準がずれるときにその基準の値を状態から外す。 68
69.
これだと" O(n) " " で解けます。 69 Java ソースコード http://arc022.contest.atcoder.jp/submissions/182824 " Pythonソースコード http://arc022.contest.atcoder.jp/submissions/183112
70.
70 「POH Vol.1」 の解説
71.
しゃくとり法" の応用です 他の解法でも100点取れます。 実はテストケースが弱いので結構100点いけるっぽいです 71
72.
5 2 9000 3000 1000 7000 5000 9000 3000 商品の値段 " それぞれのキャンペーン " 問題的にはキャンペーンは独立のものとして 考えて良い
73.
73 1000 3000 5000
7000 9000 まずソートします。
74.
74 1000 3000 5000
7000 9000 10000 > 9000 閾値より大きかったら右側を左に動かす
75.
75 8000 < 9000 1000
3000 5000 7000 9000 閾値より少なかったら左を右に動かす
76.
76 10000 > 9000 1000
3000 5000 7000 9000
77.
77 8000 < 9000 1000
3000 5000 7000 9000 これ以上進めなくなったら終了 (今までの閾値以下の最大値を返す) 途中で閾値になったらその場で終了
78.
総括 78
79.
総括 • とりあえず問題を解けるのが大事 " • 簡単な問題を解けるようになったら、計算量を考えてみる。 " •
しゃくとり法 79
80.
ふりかえり 80
81.
本日の競技プログラミングの予定 " " • 21時∼23時 AtCoder Regular
Contest (ARC#025)
82.
次回 第22回アルゴリズム勉強会 7月を予定 82
Descargar ahora