生きている

生きている

[競プロ] map,setで最大値、最小値を取得する方法(begin(), rbegin())

最近知ったTipsを共有します。競プロのためだけに理解の浅いC++を使っている私ですが、最近になってmap, setで最小値、最大値を一発で取得する方法があることを知りました。というか、そもそもこれらにデータを入れると勝手にソートしてくれてるので、最小値…

awkで乱数を使いたい - rand(), srand()

awkで乱数を使いたい時は rand() 関数を使います。 $ echo | awk '{print rand()}' 0.827331 rand() は0~1までの乱数を発生させます。そのため、例えば1〜10までの値にしたい時は以下のように書く必要があります。 $ echo | awk '{print int(rand()*10)+1}' …

awkで文字列を結合する

awkで文字列を結合したい場面は稀によくあると思います。awkでの文字列の結合方法は一般的なプログラミング言語とは違い、少し癖があります。というのも、awkには文字列を結合するための演算子がありません。他の言語では + とか concat とかが用意されてい…

ABC252 C - Slot Strategy の解説

数弱で解説を見てもよく分からなかったのですが、なんとかACできたので考え方を残しておきます。 問題 自分の回答 考え方 コード解説 感想 問題 atcoder.jp 自分の回答 int main(void){ ll N;cin>>N; map<ll,vector<ll>> MP; REP(i, N) { string s;cin>>s; REP(j, 10) { MP</ll,vector<ll>…

[C++] [競プロ] next_permutationで順列を作る

競プロで順列に関する操作を行いたい時があります。例えば与えられた数字から作れる順列を列挙しろ、みたいな問題です。そんな時、C++ではnext_permutationという便利な関数があります。 使い方 動作 注意点 計算量 next_permutationが使える例題 使い方 ま…

awkで特定のフィールドだけを抜き出す

awkでは入力をデフォルトで行単位のレコードとして読み込み、さらにそれをフィールドに分割します。フィールドは組み込み変数FS(Field Separater)で分割したモノであり、デフォルトはスペースとタブです。フィールドには左から順に$1, $2と番号が割り振られ…