Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.


第21回アルゴリズム勉強会
6月14日 @Cafe IKAGAWADO?
アルゴリズム勉強会とは?
• 勉強会のコンセプト



- 知的好奇心を満たす

- 技術力を高める(アイディア力)

- 大学や社会人の垣根を超えた交流

- 知識やアルゴリズムを共有する場

 を目指す



• 競技プログラミング(AtC...
自己紹介
"
• Web系やAndroidアプリのプログラミング
• Java/PHP/Python/JavaScript/C
• 最近は Haskellを勉強中です。
"
• TopCoder レーティング 1026 (グリーンコーダー)
•...
一応 こういうことはしませんので

あしからず
4
スマホアプリ
Webアプリ
デザイン
サービスや
ハードウェア
ビジネス的なお話
やることは・・・
プログラミング
5
アルゴリズム
アルゴリズムとは?
6
問題 アルゴリズム 答え
数値 とか 文字列
文字列
解法を考え、

プログラミングを行う
競技プログラミングとは?
• 決められた時間内に、条件に合うようにプログラムを作ります。
• 難しいアルゴリズムや、頭の体操のような問題があります。
"
• なるべく早く解くこと目指します。
7
もちろん、勉強会
ではのんびりといてください
競技プログラミングをやっても
実用性がないんじゃない?
8
No
9
競技プログラミングのメリット
"
A. いままで実装するのが難しいと感じてた事が

できるようになります。

B. 早く/速く実装することが出来ます。

C. 問題文をちゃんと読んで、

正しい(バグが少ない)実装をすることが出来ます。
D. ...
計算量?
"
わかりやすいように簡単例を出してます。
11
1,2,3….,n の総和のプログラム
12
基本的に大丈夫だけど?
1,2,3….,n の総和のプログラム
13
14
O(n)
O(1)
有名な競技プログラミングサイト
15
• TopCoder 
• 全世界で59万人が登録している。"
• SRM(Single Round Match)が有名、賞金がもらえるコンテストもある。
• 対応言語は、Java/C++/C#/VB/Python
• レーティングがあり、その...
• Codeforces
• http://codeforces.com/
• ロシアのプログラミングコンテストサイト、英語で参加可能、

TopCoderに比べて難しめの傾向があり、答えも唯一ではない問題もある。
"
• AIZU ONLIN...
参考図書
18
最近注目される"
競技プログラミング
19
http://doda.jp/engineer/guide/yosoku/09_1.html
勉強会の流れ
みなさんコーディングをしてもらいます。
各自出来た方は、システムテストをしてください。
その後、みなさんのコードを発表してもらいます。
コーディング環境
• 言語 (AtCoderが対応している言語)

C,C++/C++11,C#,Java,D,PHP,Python2/3,Perl,Ruby,

Haskell,Pascal,JavaScript,VB,OCaml,Schem...
今日やること
1. ABC #009 A - 引越し作業
• http://abc009.contest.atcoder.jp/tasks/abc009_1

2. ABC #009 B - 心配性な富豪、ファミリーレストランに行く。
• ht...
注意事項
• 特別、休憩時間は取りません。

各自お好きなときに休憩時間をとってください。

(コーディングタイムと兼ねてます。)
"
• 参加費(会場使用費・ドリンク代)は500円となっております。

ドリンクバー形式になってますので、お好き...
注意事項
• 後半になるにつれて難しくなってきます。
"
• 自分の用事やもくもく何かしててもOKです。
"
• 途中退出OKです。
24
AtCoder チュートリアル
25
AtCoder チュートリアル
26
AtCoder チュートリアル
27
AtCoder チュートリアル
28
所属は適当で

なんなら 全角スペースで
AtCoder チュートリアル
29
AtCoder チュートリアル
30
問題文
AtCoder チュートリアル
31
提出はこちらから
AtCoder チュートリアル
32
http://abc009.contest.atcoder.jp/
tutorial#tutorial_chap_2
AtCoder チュートリアル
33
AtCoder チュートリアル
AC になればOKです!
34
AtCoder チュートリアル
35
問題頑張ってください。
36
「POH Vol.1」 などで検索!
37
解説
38
ARC #022 B - 細長いお菓子
解説
39
40
1 2 1 3 1 4 4
41
1 2 1 3 1 4 4
42
1 2 1 3 1 4 4
43
1 2 1 3 1 4 4
2
44
1 2 1 3 1 4 4
45
1 2 1 3 1 4 4
46
1 2 1 3 1 4 4
47
1 2 1 3 1 4 4
3
48
1 2 1 3 1 4 4
49
1 2 1 3 1 4 4
50
1 2 1 3 1 4 4
2
これも解法のひとつです
が・・99点になります
"
"
"
最大O(n
2
) かかります
"
実際はもっと少ないけど
51
O(n)で解きたい
52
53
"
"
しゃくとり法
実は、人間が考えるのと
だいたい同じ
54
味がチェックされたか

どうか配列が必要
"
"
"
例えば
boolean[] check=new boolean[10000+1]
"
55
56
1 2 1 3 1 4 4
check[1]=true
57
1 2 1 3 1 4 4
check[2]=true
58
1 2 1 3 1 4 4
2
check[1]=false
59
1 2 1 3 1 4 4
check はそのままつかう
jを戻さない(再利用する)
60
1 2 1 3 1 4 4
61
1 2 1 3 1 4 4
3
62
1 2 1 3 1 4 4
2
jを戻さない(再利用する)
63
1 2 1 3 1 4 4
64
1 2 1 3 1 4 4
65
1 2 1 3 1 4 4
3
66
1 2 1 3 1 4 4
67
1 2 1 3 1 4 4
しゃくとり法の特徴
• 区間の値に対する状態を持つ必要がある(配列が望ましい)
• 普通の2重ループと見せかけて、使いまわす
• j (右側)のインデックスをリセットしない
• 区間の状態をリセットしない
• 基準がずれるときにその基準の値を状...
これだと"
O(n)  "
"
で解けます。
69
Java ソースコード
http://arc022.contest.atcoder.jp/submissions/182824
"
Pythonソースコード
http://arc022.con...
70
「POH Vol.1」 の解説
しゃくとり法"
の応用です
他の解法でも100点取れます。
実はテストケースが弱いので結構100点いけるっぽいです
71
5 2
9000
3000
1000
7000
5000
9000
3000
商品の値段
"
それぞれのキャンペーン
"
問題的にはキャンペーンは独立のものとして

考えて良い
73
1000 3000 5000 7000 9000
まずソートします。
74
1000 3000 5000 7000 9000
10000 > 9000
閾値より大きかったら右側を左に動かす
75
8000 < 9000
1000 3000 5000 7000 9000
閾値より少なかったら左を右に動かす
76
10000 > 9000
1000 3000 5000 7000 9000
77
8000 < 9000
1000 3000 5000 7000 9000
これ以上進めなくなったら終了

(今までの閾値以下の最大値を返す)

途中で閾値になったらその場で終了 
総括
78
総括
• とりあえず問題を解けるのが大事
"
• 簡単な問題を解けるようになったら、計算量を考えてみる。
"
• しゃくとり法
79
ふりかえり
80
本日の競技プログラミングの予定
"
"
• 21時∼23時 AtCoder Regular Contest (ARC#025)
次回

第22回アルゴリズム勉強会
7月を予定
82
Upcoming SlideShare
Loading in …5
×

第21回アルゴリズム勉強会

3,609 views

Published on

Published in: Engineering
  • A professional Paper writing services can alleviate your stress in writing a successful paper and take the pressure off you to hand it in on time. Check out, please ⇒ www.HelpWriting.net ⇐
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Try This Simple 7 Second Daily Ritual For Yourself Here ➣➣➣ https://bit.ly/2XYSZo6
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Scientist reveals real cause of weight gain. Click here now ➤➤ http://tinyurl.com/y46t9ja3
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • accessibility Books Library allowing access to top content, including thousands of title from favorite author, plus the ability to read or download a huge selection of books for your pc or smartphone within minutes.........ACCESS WEBSITE Over for All Ebooks ..... (Unlimited) ......................................................................................................................... Download FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • accessibility Books Library allowing access to top content, including thousands of title from favorite author, plus the ability to read or download a huge selection of books for your pc or smartphone within minutes.........ACCESS WEBSITE Over for All Ebooks ..... (Unlimited) ......................................................................................................................... Download FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

第21回アルゴリズム勉強会

  1. 1. 
 第21回アルゴリズム勉強会 6月14日 @Cafe IKAGAWADO?
  2. 2. アルゴリズム勉強会とは? • 勉強会のコンセプト
 
 - 知的好奇心を満たす
 - 技術力を高める(アイディア力)
 - 大学や社会人の垣根を超えた交流
 - 知識やアルゴリズムを共有する場
  を目指す
 
 • 競技プログラミング(AtCoder/TopCoder)
 の問題を中心に勉強します。

  3. 3. 自己紹介 " • Web系やAndroidアプリのプログラミング • Java/PHP/Python/JavaScript/C • 最近は Haskellを勉強中です。 " • TopCoder レーティング 1026 (グリーンコーダー) • Rank 5027 of 10087 3
  4. 4. 一応 こういうことはしませんので
 あしからず 4 スマホアプリ Webアプリ デザイン サービスや ハードウェア ビジネス的なお話
  5. 5. やることは・・・ プログラミング 5 アルゴリズム
  6. 6. アルゴリズムとは? 6 問題 アルゴリズム 答え 数値 とか 文字列 文字列 解法を考え、
 プログラミングを行う
  7. 7. 競技プログラミングとは? • 決められた時間内に、条件に合うようにプログラムを作ります。 • 難しいアルゴリズムや、頭の体操のような問題があります。 " • なるべく早く解くこと目指します。 7 もちろん、勉強会 ではのんびりといてください
  8. 8. 競技プログラミングをやっても 実用性がないんじゃない? 8
  9. 9. No 9
  10. 10. 競技プログラミングのメリット " A. いままで実装するのが難しいと感じてた事が
 できるようになります。
 B. 早く/速く実装することが出来ます。
 C. 問題文をちゃんと読んで、
 正しい(バグが少ない)実装をすることが出来ます。 D. デバッグや原因を調査する力が付きます。 10
  11. 11. 計算量? " わかりやすいように簡単例を出してます。 11
  12. 12. 1,2,3….,n の総和のプログラム 12 基本的に大丈夫だけど?
  13. 13. 1,2,3….,n の総和のプログラム 13
  14. 14. 14 O(n) O(1)
  15. 15. 有名な競技プログラミングサイト 15
  16. 16. • TopCoder  • 全世界で59万人が登録している。" • SRM(Single Round Match)が有名、賞金がもらえるコンテストもある。 • 対応言語は、Java/C++/C#/VB/Python • レーティングがあり、そのレーティングの色が有名
 • AtCoder • http://atcoder.jp/ • AtCoder社は、@chokudaiさん(高橋直大さん)が社長で
 TopCoderの解説本を書いていたり、プログラミングコンテストの賞金 などで有名。
 • 日本語のプログラミングサイトで
 多くの言語に対応している。 
 "
  17. 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. 参考図書 18
  19. 19. 最近注目される" 競技プログラミング 19 http://doda.jp/engineer/guide/yosoku/09_1.html
  20. 20. 勉強会の流れ みなさんコーディングをしてもらいます。 各自出来た方は、システムテストをしてください。 その後、みなさんのコードを発表してもらいます。
  21. 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. 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. 23. 注意事項 • 特別、休憩時間は取りません。
 各自お好きなときに休憩時間をとってください。
 (コーディングタイムと兼ねてます。) " • 参加費(会場使用費・ドリンク代)は500円となっております。
 ドリンクバー形式になってますので、お好きに飲んでください • TopCoderレーティング割が適用されます。 • グリーンコーダー   400円 • ブルーコーダー    200円 • イエローコーダー 以上 0円 23
  24. 24. 注意事項 • 後半になるにつれて難しくなってきます。 " • 自分の用事やもくもく何かしててもOKです。 " • 途中退出OKです。 24
  25. 25. AtCoder チュートリアル 25
  26. 26. AtCoder チュートリアル 26
  27. 27. AtCoder チュートリアル 27
  28. 28. AtCoder チュートリアル 28 所属は適当で
 なんなら 全角スペースで
  29. 29. AtCoder チュートリアル 29
  30. 30. AtCoder チュートリアル 30 問題文
  31. 31. AtCoder チュートリアル 31 提出はこちらから
  32. 32. AtCoder チュートリアル 32 http://abc009.contest.atcoder.jp/ tutorial#tutorial_chap_2
  33. 33. AtCoder チュートリアル 33
  34. 34. AtCoder チュートリアル AC になればOKです! 34
  35. 35. AtCoder チュートリアル 35
  36. 36. 問題頑張ってください。 36
  37. 37. 「POH Vol.1」 などで検索! 37
  38. 38. 解説 38
  39. 39. ARC #022 B - 細長いお菓子 解説 39
  40. 40. 40 1 2 1 3 1 4 4
  41. 41. 41 1 2 1 3 1 4 4
  42. 42. 42 1 2 1 3 1 4 4
  43. 43. 43 1 2 1 3 1 4 4 2
  44. 44. 44 1 2 1 3 1 4 4
  45. 45. 45 1 2 1 3 1 4 4
  46. 46. 46 1 2 1 3 1 4 4
  47. 47. 47 1 2 1 3 1 4 4 3
  48. 48. 48 1 2 1 3 1 4 4
  49. 49. 49 1 2 1 3 1 4 4
  50. 50. 50 1 2 1 3 1 4 4 2
  51. 51. これも解法のひとつです が・・99点になります " " " 最大O(n 2 ) かかります " 実際はもっと少ないけど 51
  52. 52. O(n)で解きたい 52
  53. 53. 53 " " しゃくとり法
  54. 54. 実は、人間が考えるのと だいたい同じ 54
  55. 55. 味がチェックされたか
 どうか配列が必要 " " " 例えば boolean[] check=new boolean[10000+1] " 55
  56. 56. 56 1 2 1 3 1 4 4 check[1]=true
  57. 57. 57 1 2 1 3 1 4 4 check[2]=true
  58. 58. 58 1 2 1 3 1 4 4 2 check[1]=false
  59. 59. 59 1 2 1 3 1 4 4 check はそのままつかう jを戻さない(再利用する)
  60. 60. 60 1 2 1 3 1 4 4
  61. 61. 61 1 2 1 3 1 4 4 3
  62. 62. 62 1 2 1 3 1 4 4 2 jを戻さない(再利用する)
  63. 63. 63 1 2 1 3 1 4 4
  64. 64. 64 1 2 1 3 1 4 4
  65. 65. 65 1 2 1 3 1 4 4 3
  66. 66. 66 1 2 1 3 1 4 4
  67. 67. 67 1 2 1 3 1 4 4
  68. 68. しゃくとり法の特徴 • 区間の値に対する状態を持つ必要がある(配列が望ましい) • 普通の2重ループと見せかけて、使いまわす • j (右側)のインデックスをリセットしない • 区間の状態をリセットしない • 基準がずれるときにその基準の値を状態から外す。 68
  69. 69. これだと" O(n)  " " で解けます。 69 Java ソースコード http://arc022.contest.atcoder.jp/submissions/182824 " Pythonソースコード http://arc022.contest.atcoder.jp/submissions/183112
  70. 70. 70 「POH Vol.1」 の解説
  71. 71. しゃくとり法" の応用です 他の解法でも100点取れます。 実はテストケースが弱いので結構100点いけるっぽいです 71
  72. 72. 5 2 9000 3000 1000 7000 5000 9000 3000 商品の値段 " それぞれのキャンペーン " 問題的にはキャンペーンは独立のものとして
 考えて良い
  73. 73. 73 1000 3000 5000 7000 9000 まずソートします。
  74. 74. 74 1000 3000 5000 7000 9000 10000 > 9000 閾値より大きかったら右側を左に動かす
  75. 75. 75 8000 < 9000 1000 3000 5000 7000 9000 閾値より少なかったら左を右に動かす
  76. 76. 76 10000 > 9000 1000 3000 5000 7000 9000
  77. 77. 77 8000 < 9000 1000 3000 5000 7000 9000 これ以上進めなくなったら終了
 (今までの閾値以下の最大値を返す)
 途中で閾値になったらその場で終了 
  78. 78. 総括 78
  79. 79. 総括 • とりあえず問題を解けるのが大事 " • 簡単な問題を解けるようになったら、計算量を考えてみる。 " • しゃくとり法 79
  80. 80. ふりかえり 80
  81. 81. 本日の競技プログラミングの予定 " " • 21時∼23時 AtCoder Regular Contest (ARC#025)
  82. 82. 次回
 第22回アルゴリズム勉強会 7月を予定 82

×