質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

Q&A

解決済

3回答

489閲覧

競プロでの問題の復習方法

toshiyan

総合スコア74

アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

0グッド

0クリップ

投稿2018/01/19 02:19

僕はプログラミングスキルをもっとつけたいと思っています。
そのために、競プロの問題を頻繁に解くのですが、どうしてもわからない問題が出てきます。
例えば、AtCoder Beginner Contest 076のD問題「AtCoder Express」などです。

AtCoder Beginner Contest 076のD問題「AtCoder Express」

解説を見てもよくわかりません。まず、数学記号が多いのです。

解説がよくわからないため、今は、ACが出ているソースコードをコピーしてきて、そのソースコードを動かしながら、何とか理解しようと努めています。勉強の進め方としては、これで間違いないでしょうか?そして、一日頑張ってもわからなかった場合はどうすればいいでしょうか?

回答お願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

言うほど難しい数学記号なんて出てないと思いますが…やらΣとか使われていたら投げ出したくなる気持ちもわかりますが、ここで使われている記号は全部ただの変数や比較記号、計算記号でしかないですよ。また、アルゴリズムと数学は切っても切り離せないものなので、数学記号に苦手意識を持っていることこそが学習の障害かと思います。

投稿2018/01/19 02:28

masaya_ohashi

総合スコア9206

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

toshiyan

2018/01/19 02:46

確かに、よく読んでみると何とか理解できます。苦手意識が邪魔をしています。この苦手意識を克服するためにも、解説の内容をコードに書き起こす練習が必要みたいです。
masaya_ohashi

2018/01/19 03:00

落ち着いて読めば、大したことはないのです。ちなみにこういう問題で出てくる変数で使われる「t」はTime(時間)、「v」はVelocity(速度)、「m/s」はMeter per Second(メートル毎秒)、「n」はNatural number(自然数)を表しています。nは数学で「決まっている数字ではないけど◯番目を表したい」ときに使われる記号です。このへんの知識があれば更に読み解きやすくなるでしょう。 今回の問題では使われていませんが、「r」はRadius(半径)であったり、なにかしら変数に使われている英語には意味が込められていることが多いです。
toshiyan

2018/01/19 04:01

数学で使われている変数の名前の由来についても参考になりました。ありがとうございます。そういうのがわからないと、途中でこんがらがりますよね…。
guest

0

実際に「列車を走らせる」ことをイメージできなければ、コードを考えるのは難しいでしょう。

・制限速度で走った場合が最も距離を稼げる訳ですから、制限速度に達するまでは加速するほうが良い
・次の時間区間の制限速度が、今の時間区間の制限速度よりも低いなら、今の時間区間が終わるまでに次の時間区間の制限速度まで減速しておかなければならない
というような方針や制約を考えていくと、イメージがつかめるのではないかと思います。

難しい数学記号は使われていません! 
"入力例3"
を解釈していくと、
1行目の3: 全体の時間が「3」つの区間に分けられている
2行目の12 14 2: 1つ目の区間は12秒、2つ目の区間は14秒、3つ目の区間は2秒
3行目の6 2 7: 制限速度は1つ目の区間が6m/s、2つ目の区間が2m/s、3つ目の区間が7m/s
という事なので、表のように表すと

 区間      1  2  3
走行時間[秒] 12 14  2
制限速度[m/s]  6  2  7

t1は区間1の走行時間なので12、t2は区間2の走行時間なので14、、、
v1は区間1の制限速度なので6、t2は区間2の制限速度なので2、、、

ね、難しくないでしょ?

==
t1,t2のように、末尾に添えられた数字で「xx番目の値」を表すぐらいは数学の基礎の基礎なので、判らなければ数学の参考書を読み返してください。

数列 のような受験講座のページも判り易く書かれているものが多いです。

投稿2018/01/19 03:05

coco_bauer

総合スコア6915

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

toshiyan

2018/01/19 03:55

なるほど、まず問題をイメージすることが大切なのですね。
toshiyan

2018/01/19 04:03

確かに、冷静に解説を読んでみると、理解できるものばかりですね。まだ耐性がついていないためか、脳が拒絶反応を起こしていたようです(笑)イメージしてから解説を読むことで、結構すんなりとコードに書き起こすことができました。回答ありがとうございました!
guest

0

一日頑張ってもわからなかった場合はどうすればいいでしょうか?

2日目頑張れば良いです。
そんなもんです。

投稿2018/01/19 02:25

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

toshiyan

2018/01/19 02:41

一度諦めて別の問題を解くという選択肢は駄目でしょうか?
退会済みユーザー

退会済みユーザー

2018/01/19 02:46

目標と優先順位によります。 ここは人生相談する場所じゃないですよ。。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問