ソートアルゴリズム
競技プログラミングやっていても、前提知識が全くないので
まずは前提知識をネットで調べ始めるも理解するのに時間がかかるな...と感じたので
アルゴリズムを詳しく学べる本を一冊買ってそれをやることにしました。
下記買いました。
https://www.amazon.co.jp/gp/product/B00U5MVXZO/ref=ppx_yo_dt_b_d_asin_title_o01?ie=UTF8&psc=1
コード書きつつ理解を進めます。
特徴
- 入力のデータの並びが、計算量に大きく影響する
- 計算量がもっとも大きくなるのはデータが降順に並んでいる場合
- 昇順に並んでいる場合は一番計算量が少ない
- ある程度整列されたデータに対しては高速に動作する
対数(log)
No.847 Divisors of Power - yukicoder
上記件続き。
#361386 No.847 Divisors of Power - yukicoder
この方の解答を参考に実装してみる。試し割法の実装(PHP)はうまくいった。
Online PHP/Java/C++... editor and compiler | paiza.IO
その後の下記がなんのためにやっているのかよく分からない...。
p_cnt[i] = min(k * x, int(log(m, i)))
とりあえず実装してみて、考えてみよう。
対数(log)
5分でわかる!対数「log」記号の意味 | あぱーブログ
素因数分解
No.847 Divisors of Power - yukicoder
この問題やろうとして、単純に下記のように全部割り切れる数を出そうとすると数が多すぎた場合Infiniteになってしまって計算できないし、処理時間が長くなりすぎる。
そのため、処理を削るために「素因数分解の試し割り」を試してみているが上手くいかない。
正解しているコードも参考にしつつ再度組んでみようと思う。
【試し中】Divisors of Power:https://yukicoder.me/problems/no/847 · GitHub
素因数分解の試し割り 素因数分解とかエラトステネスの篩(ふるい)とかのメモ - 唯物是真 @Scaled_Wurm
平方根:√a = x:xを2乗するとa になる数 平方根の基本(基)(平方根とは) - 数学の解説と練習問題
Grundy数 / エラトステネスの篩 / 深さ優先探索
yukicoderで★★レベルで全然分からんってなるレベルなので、競技プログラミングで覚えるべき
アルゴリズムやありがちな問題についてまず覚えていきたい。
分からなすぎて必死に考えるんだけど、全然分からんという状態が脳を鍛えているなと感じるのでいい習慣になりそう。
問:A の約数であってBの倍数であるような整数が存在するか
#380055 No.882 約数倍数 - yukicoder
約数と倍数の性質
A / Bが割り切れる場合に、Aの約数でBの倍数であるといえる
Grundy数
http://augusuto04.hatenablog.com/entry/2015/05/03/233606
30を言ったら負けゲームで、先手必勝か後手必勝かを判定する
エラトステネスの篩で素数判定
https://tech.basicinc.jp/articles/52
深さ優先探索
https://qiita.com/shki/items/cc9806564a2690e90fdb
↓上記読んでPHPで実装したやつ
深さ優先探索 · GitHub
食品の知識
精白の有無による違い(白米と玄米の違い)
精白によって米の外皮や胚芽が取り除かれる。 ''食物繊維''が減る
玄米は不溶性食物繊維に分類されるため、腸を刺激して排便を促す効果がある。 不溶性と水溶性、2つの食物繊維をバランスよく摂取するためには? | 大塚製薬 | 栄養ラボ
糖質制限
糖質制限ダイエットによる体への影響は?
- 糖質(でんぷん)に含まれる「グルコース」は筋肉や脳を動かすエネルギー源として欠かせない
- グルコースが足りないと、筋肉などを溶かして足りない部分を補おうとするので筋肉が減少してしまう
- 筋肉が減る->消費カロリーが減る
- 食物繊維がとれない->便秘や腸内環境が悪化
- むしろ肥満になりやすい体質になる
- 1食ごとに茶碗1杯程度のお米を食べる
- 適度な糖質は必要
小麦は摂取しない方がよい?(グルテンフリー
20190912
何をするにも課題解決
仕事をする=課題解決 何かを学ぶ、やり方を知るには
- 1.何が出来るようになりたいのかを明確にする(ゴールを決める
- 2.それを解決するために情報を収集する
- 3.実際にやってみる
- 4.今自分が分からないことを知る
- 5.2に戻る
ゴールを明確にしないと、途中で分からなくなってきたときに強制力がないとそのままフェードアウトしがち 解決策が見つからなくてエターナる
10分単位でやることを習慣化しておくべきだなとも思う。
本気で向きあうこと
これまでプログラミングの勉強もちょこちょこやっていたつもりではいたけど 自分が仕事やプログラミングに対して本気で向き合えていたか、というと向き合えていなくて ただ勉強をしている自分に酔っていただけで、自分が高尚な何かになれているように感じられていただけだった。 実力も全然ついていなかった。
自分が本気になったとしても、たかが知れているわけでそんな人間が本気で向き合ってないのに よい成果が出るわけがない。本気でやったとしても9割はダメだということを覚悟しておくべきだ。 自分は大した人間ではないということを自覚してただ目の前のことにひたむきに向き合っていくべきだと思う。
仕事には遅刻せず出勤し、どんなことにもどうすればもっとよくなるか考えて実践していく。 時間をかけすぎてもいけないが、時間をかけすぎる位考えるという事も必要なのかも。 それは、会社終わってからやるべきだとは思うけど。
考えることをめんどくさがらない
めんどくさがる対象が、「考えること」をめんどくさがってはダメで、ただの単純作業に対して「めんどくさい」と思わなければいけない。 「考えること」がめんどくさいと思ってしまうのは、すべてをダメにしてしまう思考だと思う。
なぜ考えることがめんどくさいのか?は、すぐに結果を出さないといけないと思ってしまうプレッシャーからだったり 自分が考えてもどうせダメだろ、という諦観が邪魔をしていると思うので「根拠のない自信」を持つことと他人からの評価はまず無視しておくべきだなと思う。 他人にどれだけ酷評されても、一線を引いてまともに取り合わないことが大事。客観的に、自分でもダメだなと思うところは聞いて直していく。 「自分は頑張ってもムダ」と思ってしまい行動できなくなるのが一番ヤバイ。ダメな部分をコツコツ直していけば、前よりはましな自分になっていくはず。
好奇心を満たす、蓋をしない
一つのことに固執せずに、興味が出てきたいろんな分野を掘ってみるのも楽しい。 これまでプログラミングの事だけを対象にしていたように思うけど、自分で興味のふたをしていたような気がする。 自分なんかがやってもどうせダメとか、そんなことやってる暇あるのか?というネガティブな問いが自分の首を絞めているように思える。 そういうことを考え始めたら、まあ俺だしダメでも何にも結びつかないとしても好奇心を大事にしていく。
メンタルが弱い=ナルシストであるとも言えて、理想像が高くてギャップが大きいので何か傷つくような事が起きたときに落ち込みやすい。 成果で自分を評価するんじゃなく、姿勢や行動に対して評価していく自分の方がいいなと思う。