AtCoderでC++やPythonでコードを書く際に、標準入力の処理に戸惑うので、整理
入力
C++
有限個の場合
int a,b,c;
cin>>a>>b>>c;
可変の場合:vectorを使う
#define rep(i,n) for (int i = 0; i < (n); ++i)
vector<int> a(n);
rep(i,n) cin >> a[i];
Python3
有限個の場合
a,b,c = map(int, input().split()))
可変の場合:listを使う
a = list(map(int, input().split()))
出力
C++
出力1
cout<<a<<" "<<b<<" "<<c<<endl;
出力2
printf("%d %d %d", a,b,c);
python3
print(c,a,b)
その他TIPS
・割り算は掛け算に変換する。C++やJavaは除算の切り捨てが発生するため、WA(Wrong Answer)の温床になりやすい。
再帰になれるために
DFS(Depth First Search,深さ優先探索)をする場合に、再帰の考え方が必要になる(スタックでもいいが)
問題
https://atcoder.jp/contests/abc165/tasks/abc165_c
<参考になった考え方>
再帰で意識すべきポイント1
再帰の1stepで何をしたら次に繋げられるか
ポイント2
終了条件をどうするか
RE(ランタイムエラー)になったときの、エラー箇所特定
【よくある質問】REの原因がわかりません => C/C++言語におけるmain関数の型、戻り値。ゼロ除算。配列の範囲外アクセス、などがあります。http://arc007.contest.atcoder.jp/faq#about_RE
今回は、Vectorの確保がでかすぎてエラーになっていた。
printf("1 1");return 0;
printfの中身は、適当な出力結果。これをREになる手前に挿入すると、回答がWA(Wrong Answer)になるため、どこでREになっているか追える。
連想配列(map)で、全キーに対して順番に処理したい
std::map<std::string, int> mp
いろんな値を設定;
for(auto itr = mp.begin(); itr != mp.end(); ++itr) {
std::cout << "key = " << itr->first // キーを表示
<< ", val = " << itr->second << "\n"; // 値を表示
}
https://atcoder.jp/contests/abc166/tasks/abc166_e
連想配列を使う問題で利用した。
その他参考
std::mapまとめ
https://qiita.com/_EnumHack/items/f462042ec99a31881a81
++iとi++の違い
a = ++i; //i=i+1してから、a=iする。
a = i++; //a=iしてから、i=i+1する。
long long を printf で表示する
%lldや%llxを使用する
http://nanoappli.com/blog/archives/3229
10^18 < LONG LONG < 10^19
10^9 < INT < 10^10
少数の掛け算はするな!
FROM ABC_169_C
誤差が発生するため。整数に直してから実施すること
https://drken1215.hatenablog.com/entry/2020/05/31/224300
もしくは少数のまま扱う場合は、long double型を使うこと。
参考
AtCoderで青色(8割以上のIT企業でアルゴリズム力はカンスト)になったので青になるまでに必要そうなことをまとめる
https://qiita.com/kami634/items/e452f804ba9d585a8b57
GitHubとVSCODEの連携方法
https://qiita.com/yu0313/items/4f95fc0b7e544c42e107
レッドコーダーが教える、競プロ・AtCoder上達のガイドライン【初級編:競プロを始めよう】
https://qiita.com/e869120/items/f1c6f98364d1443148b3
AtCoderで初めて色がつくまでの話(茶色) レートが中々上がらなかった原因
https://tech-blog.s-yoshiki.com/2018/11/778/
DFS (深さ優先探索) 超入門! 〜 グラフ・アルゴリズムの世界への入口 〜【前編】
https://qiita.com/drken/items/4a7869c5e304883f539b
競プロ「これだけ5問!」
https://the-zeng.com/select5/
【競プロ】AtCoder早解きテクニック10選 (灰 ~ 緑コーダー向け)
https://qiita.com/xryuseix/items/7e9b4c6f12d001a0c0db
C++ 素因数分解して約数の個数を求める
https://pomupomu.hatenadiary.jp/entry/2019/01/03/114653
最速の素数判定プログラム C# Java C++
https://qiita.com/asksaito/items/76b71602dd956b79dbf7