ベスパリブ

プログラミングを主とした日記・備忘録です。ベスパ持ってないです。

C++

std::set の for アクセスは遅い(C++)

C++

知らなかった~。 コンパイル環境 コンパイラバージョン > gcc --version gcc.exe (Rev6, Built by MSYS2 project) 10.2.0 Copyright (C) 2020 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO …

ABC 284 F - ABCBAC 解いたので解説

問題:AtCoder Beginner Contest 284 F - ABCBAC 解説 公式の解説を見ながらZ-Algorithmで解いた。Z-Algorithmについては参考URLの章の記事を参照してください。 文字列Sを反転した文字列をS'とおき、SとS'をそれぞれ以下のように表現する。 文字列Sと、Sを…

AOJ0366 Road Improvement(道路網改修) の解説

問題:Road Improvement(道路網改修) 解説 「強連結成分分解(SCC)を使って同じグループの頂点を1つにまとめると、サイクルを含まないDAGになる」という性質を使う。 同じグループのものは1つの頂点とみなした新しいDAGグラフにおいて、入次数が0の頂点を…

Advertisement: 宣伝(日本情報オリンピック2009)の解説

問題:advertisement - 宣伝 (Advertisement) 解説 「強連結成分分解(SCC)を使って同じグループの頂点を1つにまとめると、サイクルを含まないDAGになる」という性質を使う。 連絡先を知っている関係をグラフとして表す。 をSCCしたあと、グループを1つの頂…

ABC233: E - Σ[k=0..10^100]floor(X/10^k) を解いた

問題:AtCoder Beginner Contest 233: E - Σ[k=0..10100]floor(X/10k) 解説 を計算せよという問題。 Xの制約が と大きいし、k=0から10100まで計算は普通にしていたら制限時間に間に合わない。 Xの桁数が最大500000なので、問題をエスパーすれば計算量O(桁数…

SoundHound Inc. Programming Contest 2018 -Masters Tournament- のC問題解いた

問題:SoundHound Inc. Programming Contest 2018 -Masters Tournament- C - Ordinary Beauty 1~nの目のサイコロがある m回サイコロを振って、出た目を数列とする 数列の隣り合う2項の差がdの個数を、その数列の美しさとする 数列の美しさの期待値を求めよ …

C++で行列計算ライブラリを自作してみた

C++の独習がてら行列計算ライブラリを自作してみました。 なんでこんなことしたかと言うと、普段競プロしてたら他人の作ってくれた便利なmintライブラリを使ったりするのですが、演算子オーバーロードの文法とかをよくわかってないままコピペして使ってたの…

ABC190 E問題

問題:AtCoder Beginner Contest 190: E - Magical Ornament 解説 解説動画まんまかもしれません。 魔法石が個あります。 各魔法石は隣り合わせになっていいやつが決まっています。重要魔法石の集合をすべて含んでいるように魔法石を1列に並べたとき、必要な…

Educational DP Contest I - Coins 解いた

問題:I - Coins 解説 // dp[i][j] := i枚目を投げたとき表がj枚の確率 // p[i] := i枚目が表が出る確率 ということっぽいのはわかるのだが、ここからどうすればいいのかわからなかったので、一つずつdpの状態を書いていった。 // 1枚投げて表が0枚の確率 dp…

ABC 181: E問題の解説 (C++)

問題:AtCoder Beginner Contest 181: E - Transformable Teacher 解説 とは事前にソートしておきます。 先生と組む生徒以外の人のペアの身長差は、ソートしたときに隣り合う人でペアを作り続ければよさそう。 図にすれば以下。 黒丸が先生と組む生徒、白丸…

cannot open source file "wchar.h" (dependency of "iostream") エラーを解消する

VSCodeでC++環境を構築していました。 2018年版 C言語/C++ 入門者のための環境構築 (Windows編) - LYNCSブログ C++で競プロをやるためのVSCodeの環境づくり - Qiita 上記のサイトを参考にしつつ構築していたら、VSCodeのC++環境でcannot open source file "w…

【C++】charからstringへの変換

C++

C++全然わからん。 #include <iostream> #include <string> #include <map> using namespace std; int main(int argc, char const *argv[]){ string s = "ABC"; map<string, int> mp; mp["A"] = 0; //mp[s[0]]++; // エラー mp[{s[0]}]++; cout << mp["A"] << endl; return 0; } char型のものは{}</string,></map></string></iostream>…

C++で文字列のスライス

C++

C++全然わからない。 最近C++を使っているのですが、Pythonでいう文字列のスライスが使いたい。 s = "abcdef" print(s[0:3]) # ==> "abc" こんなの。 調べてもないっぽいのでそれっぽいものを実装。 #include <iostream> #include <string> using namespace std; string str_sl</string></iostream>…