アルゴリズムを勉強するときに参考にしてください

4630 ワード

どうして知らないのですか。🤔


どうして今知ってるの?🤔


勉強しているうちに、こんな考えがたくさんあります.
この文章の中で、特にアルゴリズムを勉強するとき、知っていれば、丁寧に整理しておきます.
後で何か知っていることがあれば、追加を整理します.

アルゴリズムはC++で解いたほうがいい


ただし,必ずしもC++で解く必要はなく,C++では難しいこと(文字列処理など)にPythonを付帯して用いることができる.
理由は次のとおりです.
これはPythonが非常に遅いため、運転速度の違いです.アルゴリズムの種類は異なりますが、5~100倍の差がある場合があります.
本稿はC++に基づいて作成する.

<bits/stdc++>ヘッダの使用


上のタイトルには事前に多くのタイトルが含まれているので、一つ一つ含める必要はありません.
しかし、msvcコンパイラ(visualstudio 2017/2019)では使用できません.代表的でよく使われるタイトルを単独で処理したり、覚えたりするのが望ましいです.

実数の記憶、演算の過程で必然的に誤差が発生する


これは、エラーデータ型の特徴、例えば0.1+0.1+0.1がコンピュータ上で0.3ではないためである.0.1をバイナリ数として表す場合、無限小数であるため、コンピュータ注釈の有限性により誤差が生じる.エラーデータ型の特徴を説明するには,長いページ処理が必要であるため,これを知るだけでよい.

比較エラーでは等号は使用できません


同じくミス資料型の特徴のためです.一緒にやろう
int main(void){
    double a = 0.1 + 0.1 + 0.1;
    double b = 0.3;
    if(a == b) cout << "equals";
    if(abs(a - b) < 1e-12) cout << "equals by function";
    
    return 0;
}
result: equals by function
これも、上記で説明したミス資料型の特徴であり、ミス資料型は不等号で比較され、誤差範囲で比較されるからである.二人の差が十分小さいなら同じ非常に小さな差の値です.例えば、1^(-12).

スペースを含む文字列を受信するときにgetlineを使用する


次のコードを見てみましょう.
int main(void){
    string s;
    getline(cin, s);
    
    cout << s;
}
input: Hello World!
output: Hello World!
getline()関数を使用して、上記のスペースを含む文字列を入力として受信します.

ios::sync_with_stdio(0); cin.tie(0);書き上げる


C標準I/Oと切り離されたコードとバッファのコードを一度にクリアします.これでI/O時間が短縮されるので必ず書きます.

endを使用しない


改行後にバッファを空にするコードですcinですtie(0);バッファを一度にクリアすることにします.絶対使わないでね
改行する場合は、改行文字を印刷します.

(エンコードテスト中)出力末尾にスペースや改行があっても構いません


スコアサーバは、テストケースのスコアを表示する部分のみを表示します.最後に表示されるスペースや改行を心配する必要はありません.

私が準備した内容はここまでです。個人学習のために書かれていますが、知識はすべての人に開放されなければならないので、そう書きます。有益な内容を知っていれば、ゆっくり追加していきますので、お好きになってください!ありがとうございます!


注意:
https://blog.encrypted.gg/921?category=773649
https://blog.encrypted.gg/965
https://blog.encrypted.gg/922?category=773649
https://blog.encrypted.gg/923?category=773649