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.

競技プログラミングについて

757 views

Published on

競技プログラミングについてです。

Published in: Education
  • Be the first to comment

  • Be the first to like this

競技プログラミングについて

  1. 1. @ ei1333 競技プログラミングについて
  2. 2. 目次 競技プログラミングとは 競技プログラミングで得られるもの 何問か解いてみよう まとめ(宣伝) 2017/1/19 競技プログラミングについて 2
  3. 3. 目次 競技プログラミングとは 競技プログラミングで得られるもの 何問か解いてみよう まとめ(宣伝) 2017/1/19 競技プログラミングについて 3
  4. 4. 競技プログラミングとは 2017/1/19 競技プログラミングについて 4 1. ある問題が与えられる −実行時間やメモリ使用量の上限も同時に与えられる • 終わらないプログラムはダメ、メモリをたくさん使うプログラムもダメ 2. その問題を解くための手順を考える 3. プログラムとして実装する
  5. 5. 競技プログラミングとは 2017/1/19 競技プログラミングについて 5 解き方を 考える 要するに、 実装
  6. 6. 目次 競技プログラミングとは 競技プログラミングで得られるもの 何問か解いてみよう まとめ(宣伝) 2017/1/19 競技プログラミングについて 6
  7. 7. 競技プログラミングで得られるもの プログラミング言語の知識, 実装力 アルゴリズムとデータ構造の知識 数学力 (英語読解力) (賞品) (友人) 2017/1/19 競技プログラミングについて 7
  8. 8. プログラミング言語の知識, 実装力 プログラミング言語の知識 −プログラムを記述することにより問題を解く −C++, Java, C# などのプログラミング言語がオーソドックス (競技プログラミングに向いている) 実装力 −プログラムをなるべく早く、正確に、何度も実装する −実装に悩んだりバグを埋め込んだりすることが減る 2017/1/19 競技プログラミングについて 8
  9. 9. アルゴリズムとデータ構造の知識 アルゴリズムとデータ構造の知識 静大から浜松駅への最短経路 2017/1/19 競技プログラミングについて 9 道 交差点
  10. 10. 円と多角形の共通部分の面積 1. 円と多角形の交点を求める 2. 複数の三角形に分割 3. 三角形の面積の和を計算 数学力 数学力 −数学や確率、行列などを応用した問題がたびたび出題される 2017/1/19 競技プログラミングについて 10 𝑛(1 ≤ 𝑛 ≤ 1018)番目のフィボナッチ数 1 1 2 3 5 8 13 21 34 55 89 144 … 𝐹𝑛 = 𝐹𝑛−2 + 𝐹𝑛−1: 2 項間漸化式 行列累乗に落とすと 𝑂(log 𝑛) 𝐹𝑛 𝐹𝑛+1 = 0 1 1 1 𝑛 0 1
  11. 11. 英語読解力 (英語読解力) −問題文が英語のものが多く存在 −のちに紹介する ACM-ICPC の公用語が英語 • 任意のアナウンスが英語(何を言っているかわからない)で, 英語でチーム紹介をさせられる… −他にも何かといろいろな場面で必要です>< 2017/1/19 競技プログラミングについて 11
  12. 12. 賞品 (賞品) −コンテストで上位に入ると, Tシャツや賞金がもらえる • 主に Hacker Rank, Code Chef, オンサイトのコンテスト • Tシャツはたくさん貰える • (そもそも上位に入るのが難しい) 2017/1/19 競技プログラミングについて 12 この間のCODE FESTIVAL 2016 で貰ったTシャツです
  13. 13. 友人 (友人) −競技プログラミングをしている人は Twitter をしている人がほとんど(要出典) −同じ趣味を持つ人と知り合える −頭が良い人たちと話せる −良い刺激になる 2017/1/19 競技プログラミングについて 13
  14. 14. 目次 競技プログラミングとは 競技プログラミングで得られるもの 何問か解いてみよう まとめ(宣伝) 2017/1/19 競技プログラミングについて 14
  15. 15. 何問か解いてみよう 実際の競技プログラミングで出題される問題について −早い人だと数十秒で解ける簡単な問題 −その手のプロでも数時間かけないと解けないような問題 出題される問題には難易度の差が存在!! −さすがに数時間かける問題を解いている時間はなく, 専用の知識を使う問題だと分からないのでつまらない…. 事前知識がなくても分かりそうな問題を取り上げてみます 2017/1/19 競技プログラミングについて 15
  16. 16. ABC049 C - 白昼夢 / Daydream 文字列 S (Sの長さは10^5以下) が与えられる T が空文字列である状態から 次の操作を好きな回数繰り返すことで S = T にできるか判定せよ −T の末尾に ‘dream’ ‘dreamer’ ‘erase’ ‘eraser’ のいずれかを追加 2017/1/19 競技プログラミングについて 16 S = ‘erasedreamer’ ‘erase’ → ’dreamer’ の順で追加する 可能 S = ‘dreamerer’ 不可能
  17. 17. ABC049 C - 白昼夢 / Daydream 解法 追加される文字列は微妙に被っていて大変… ‘dream’ ‘dreamer’ ‘erase’ ‘eraser’ ‘dreamer…’ → ‘dream’ + ‘erase’,’eraser’ → ‘dreamer’ + ?? 文字列 S を反転させると簡単になる! −追加される文字列も反転 ‘maerd’ ‘remaerd’ ‘esare’ ‘resre’ −愚直に比較するだけで判定可能となる 2017/1/19 競技プログラミングについて 17
  18. 18. yukicoder No.415 ぴょん 𝑵個の足場が距離 1 の等間隔で並んでいる −足場にはある足場を基準に 1 から 𝑁 までの番号が振られている うさぎちゃんは足場 1 にいる うさぎちゃんは次の行動を好きな回数できる −距離が D 離れた足場にジャンプして移動する 足場はデリケートなので, 1度ジャンプしたもとの足場は消える うさぎがジャンプできる最大の回数を求めよ 2017/1/19 競技プログラミングについて 18
  19. 19. yukicoder No.415 ぴょん N = 5, D = 2 の例 答えは 4 2017/1/19 競技プログラミングについて 19
  20. 20. yukicoder No.415 ぴょん 解説 (これは, 自分が作問してコンテストに出した問題です) ジャンプは一方方向に, できるかぎり続けるのが最適 できなくなるタイミングを考える −これは最初に足場 1 に移動するとき −すなわち, 円環の長さの倍数と移動距離の倍数が最初に一致するところ 2017/1/19 競技プログラミングについて 20
  21. 21. yukicoder No.415 ぴょん 解説 これは N と D の最小公倍数 lcm(N, D) そのもの これを D で割って 1 をひいた 𝑙𝑐𝑚 𝑁,𝐷 𝐷 − 1 が答えとなる 2017/1/19 競技プログラミングについて 21
  22. 22. プログラミングコンテスト ABC049とかyukicoderとかはコンテストサイトの名前です コンテストサイトにはいろいろあって以下のような特徴があります 2017/1/19 競技プログラミングについて 22 難易度 日時 時間 概要 ABC(AtCoder) ☆1~☆3 隔週土曜22時 100分 初心者向け ARC(AtCoder) ☆3~☆5 100分 中~上級者向け AGC(Atcoder) ☆2~☆6 110分 Codeforces ☆2~☆6 不定期 1時35分 120分 英語 2強のうちの1つ SRM(Topcoder) ☆1~☆6 不定期 90分 英語 2強のうちの1つ yukicoder ☆1~☆4 毎週金曜22時20分 120分 初心者に優しい HackerRank ☆3~☆7 不定期 1週間など 英語, 開催時間が長い たまに賞品を貰える
  23. 23. 目次 競技プログラミングとは 競技プログラミングで得られるもの プログラミングコンテスト まとめ(宣伝) 2017/1/19 競技プログラミングについて 23
  24. 24. まとめ(宣伝) 時間がなくて説明しきれなかったところが大半ですが, たのしいです −プログラミングコンテストで結果に応じて順位がつくところとか 興味を持ったらぜひ調べてみてください −生協に競技プログラミング対策用の本 「プログラミングコンテストチャレンジブック」が売っています(やったね) 2017/1/19 競技プログラミングについて 24
  25. 25. ご清聴ありがとうございました! Thank you for your kind attention!! 2017/1/19 競技プログラミングについて 25

×