しがない元高専生の競プロ日記

AtCoderとかいろいろ解いてく

AtCoder Library(ATL)をVisual Studioで使えるようにした

注: アホなことをしています。あと様々なバグに引っ掛かったわけではないのですべてを解決するブログではないです。あくまで備忘録として見てください。

AtCoder Library(ATL)

本日AtCoder Library(ATL)が公開されました。

atcoder.jp

私はVisual Studioを愛用しているのですが少しハマったので備忘録として残します。

公式のインストールガイド

配られているzipを解答してappendix.htmlを見ると出てくる。

C:\Program Files (x86)\Microsoft Visual Studio\2019(Community, Professional or Enterprise)\VC\Tools\MSVC(Some number, e.g. 14.27.29110)\include\atcoder\dsu.hpp となるように配置してください。

(一部抜粋)

ここまでブログ書いて気づいたんですが、全く別のことしてました...

私はC:\Users\hogehoge\source\repos\repo_name\repo_name\atcoder\dsu.hppに入れてました。

つまりプロジェクト直下に入れてたわけですね。

#include<bits/stdc++.h>も同じ方法で入れてたので流れでやってしまいました。

今読んでる人はちゃんとした場所に入れようね!

(あとリファレンスはちゃんと読みましょう)

もしやってしまったら

地獄が待ってます。

ATLで使用する#include<hogehoge>関連をすべて#include "hogehoge"にする必要があります。

要は自作ヘッダーファイルとして認識されるのでそうなるようincludeも変えないといけないんですね。

これをすると、ATLのライブラリを相互参照している部分まで全部変える必要があるのでクソめんどいです。(全部やった)

一応、F5でビルドしてWarningで死んだ部分まで定義に移動して脳死で変換すれば多少マシにはなる?

ここでビルド通って動いたら

おめでとう! 終わり!w

動かなかったら

__umul128(z, im, &x);で落ちたら

VS2017使ってたのに死にました。

諦めてVS2019インストールしたら直りました(は?)

"C2131: 式は定数に評価されませんでした"といって落ちた場合

internal_math.cppの該当部分を

// これを
for( long long a: {2, 7, 61}) {
    // hogehoge~
}

// こうする
long long v[3] = {2, 7, 61};
for (long long &a : v) {
    // ushitapunikia~
}

と自分は上手く行った。

その他

頑張ってください...

最後に

ACコード(ローカルでも実行確認済)

atcoder.jp

競技プログラマーに環境構築を求められると死にます(悲しい)

ARC級がすぐ来るのでATL使いこなせるようになりたい。

おまけ

Grow mapはいいぞ f:id:honehaniwa:20200908031930j:plain