ミス
数を長さNで循環シフトさせて、その後の偶奇を知りたかった。 if((x - shift + N) % N % 2 == 0) ... としなければいけないところを if((x - shift) % 2 == 0) ... とかしていた。 当たり前だが、((x mod m) mod n = x mod n)は一般には成り立たない。 例え…
rep(j, a.size()) aa[a[j]] = 1; とすべきところを rep(j, a.size()) aa[j] = 1; としていた。 解法がMaximumFlowであって、そっちがバグってるんじゃないかと思っていたが単純なミスだった。解法・ライブラリ・変な所が間違ってるんじゃないかと思って確認…
(p - str)とかしてインデックスを求めることはそれなりにある。 しかしこれ(p - str)を(str - p)としても何の警告も出ない!(もしかしたらstrが配列の時は何かあるかも?) (node - nodes)とか紛らわしい名前を使っていると、(nodes - node)としてしまっても…
int a[5]={1,2,2,2,4}; multiset<int> s(a,a+5); s.erase(2); //s = {1,4} C++STLはきちんと体系的に学んでいないから勘違いが多くて悪い</int>
map<string,int> a; for(int i = 0; i < name.size(); i ++) { string s = name[i]; a[s] = a.count(s) ? max(a[s], score[i]) : score[i]; } 名前のリストと(負の数もありうる)スコアのリストが与えられるので名前ごとの最大スコアを計算するという趣旨のコード。 しか</string,int>…
"SRM 303 DIV1 Medium Knights"で、本問題は出来たのに入力パースミスった! この問題は"D1 D5 E2 E4 C3"のような、アルファベットと数字のリストで与えられる。 そこを、stringstreamで両方charで読んでしまった! "D10 E22"のような二文字に渡る数値によっ…
もう、速度の問題とかオーバーロードの問題とか無い時は、基本的にはlong longを使うようにする。 そのためにテンプレートのtypedefを変えてみた。 ついでにvectorもいれてみた 旧 typedef long long ll; typedef vector<int> vi; typedef pair<int,int> pii; typedef vect</int,int></int>…
__builtin_popcount関数は便利。だが、これはunsigned int用であって、(sizeof int < sizeof (long long) だと)long longだと暗黙に切り詰められちゃう。 unsigned long long用には__builtin_popcountllがある。 これにWarning出すにはどうしたらいいんだろ…
なんか0x7Fを今まで'`'だと勘違いしてた。今までよく無事だったな…。 本当の0x7Fは'~'。bitwise-not演算子。チルダ。 0x7F: '~' string(1,'~') "~~~~~~~~~~~~~~~~~~~~~~~~~"
頻繁にやってしまう。警告も何も出ない。 そして意味不明なバグとなって混乱させる。 また、今回はたまたまExample通ったからFailedした。 g++に-Wshadowというオプションがあるようだ。これと-Werrorつけてやるか
vpii v; //... v.pb(mp(hypot(xi - xj, yi - yj), j)); 的なことをやってしまった。 double直接でなく、pairのvectorというのがわかりにくくしていたか。 警告は出てたが無視してしまった。 警告は無視するな!
間にスペースや"$"などを入れること
偶数の素数が1つあって、それは2。 いろいろな定理で"奇素数"とか"n以上"とかで回避されてることがある。 場合分けするように注意
酷いミス。確認しろ 本当に
シフト演算子の結果は、左右辺の大きい方の型、ではなく、必ず左辺の型になる(たぶん)。 ので、iをlong longにしないで、必ず (1LL チャレンジの際にも気に留めておこう