怠惰はいけません
時には便宜のために、私はマクロの多くを使用します。しかし、最近、私は常に次の二つのマクロの問題が見つかりました:
1つ の#define SET(x、A)のmemset(X、はsizeof(X)) 2インラインボイドワーク(){ 3 SET(頭、0)、SET(VIS、0)、SET(DIS、0x3fを)。 図4は、 // 何かを 5 }
このマクロ定義は、初期化中に、いくつかの不可解な質問のようです。
また、これがあります:
1 の#define RP(I、B)(iは= intを登録する;私は= Bを<; I ++の)のための 2インラインボイド)ワーク({ 3 ベクター< INT > 版。 4 // 何かを行う 5 RP(I、0 ver.size() - 1 ){ 6 // 何か 7 } 8 }
あなたが定義すると RPのマクロサイクルを、それが問題の数を決定します。例えば、上記の例では、もしver.size()== 0は、このサイクルの通常入りません。しかし、順序を決定するために、そのマクロ定義の後に変更されているようです。
非常に奇妙な、右?したがって、いくつかは、マクロまたはを台無しにしないでください。私の後にも、この問題に注意してください。
台無しにしないカードが多いです
いくつかのオンラインカードは奇妙な方法は、例えば、しばしばありますが、私++のように書かI = - 〜I、またはステートメントの数へのリンクをたっぷりとカンマ。かつての場合は、速度を向上するために、とてもうまく想像していないとして、事実を最適化し、このバイナリは明白ではありません。後者のために(私はまた、私は速度を増加させる++ ++書きたいが)、ある程度コンマオペレータが、効率を向上させることができ、いくつかの時間は、いくつかの奇妙な問題であろう。ほんの数、残りの部分は無視されますがあり、プログラムの一部である、時々しかし、私は私がコンマに接続の数によって文の多くを置くのが好き、長い時間前に覚えています!私は本当に知っているこの問題を持っていますが、私のアドバイスは、コンマを台無しにしないではありません。
注スペースの複雑さ
任意のアルゴリズムやデータ構造を学習すると、そのスペースの複雑さの完全かつ正確な記録でなければなりません。例えば、トライ程度のスペースの複雑さはどのくらいですか?一般的に多くを開きますか?配列の開放側は二回のタイトルを与えるかどうかを描画する前に、チェーンと星へのデポジットは、?これらの問題は、あなたがサンプルを通過させることができるかもしれない、注意を払っていないが、最終的にポイントを取得するために失敗することがあります。オンライン評価である場合、評価機は時々ませんフィードバックREが、WAを行います。あなたが長い時間のために、この問題をデバッグするために、あなたは、注意を払っていない場合。
その型変換に注意してください。
必ず変換の種類に注意を払います。型変換のint型の式に代入するとき時々、あなたはlong long型に開いているすべての数値型変数を入れた場合でも、あなたは忘れるかもしれません。このように、式が割り当てられる前にオーバーフローします。いつでもあなたは心の中で、変数の種類を維持し、時々それを変換します。
また、キャストはかなり遅いです。あなたは、変数の前で直接long long型に変換したい場合は1LLを掛け、通常のdouble型のため、直接1.0を掛けすることができ、より具体的なまたは__int128 long double型のために、あなただけのキャストすることができます。