matthew as a q.

競技プログラミングメイン

AWS EC2にIPv4のpublic IPアドレスが自動割り振りされないときの対処法

これなに

AWS EC2のインスタンスを起動しているはずなのに、アクセスできなくて困った人の備忘録です。

事象

作成されたEC2のIPv4のpublic ipが割り振られておらず、アクセスできなくなっていた。アクセスできるようにするためには、IPv4のpublic ipを割り振る必要がある。

原因

EC2インスタンス作成時に「自動割り当てパブリックIP」の項目で、「サブネット設定を使用(有効)」(※)を選択するか、「有効」を選択する。

f:id:takeknock:20210430154847j:plain

注釈

IPv4自動割り当てを有効にしたサブネットを「サブネット」に指定している必要がある。IPv4自動割り当てが無効なサブネットを指定している場合、「サブネット設定を使用(無効)」と表示されるので注意。

2021年の目標

kaggle

kaggle expert(銅2入賞)とる。 2021年6月30日 upvote上位のnotebookとhotness discussionを追い続けるコンペを最低3つ。

競技プログラミング

AC数累計500突破(Educatinal DPの前半と水色コーダー100選やる)。AtCoder水色になる。

家庭

家庭と競技がかぶったら家庭を選ぶ(去年から引き続き)

仕事

幅を広げる。新しい領域で1つ以上の成果を残す。

資格

宅建士試験を受ける DBスペシャリスト受ける 統計検定2級受ける

numerai

submit

std::setの使い方

問題

AGC 022 A問題。

A - Diverse Word

解法のポイントとsetの使いどころ

文字数が26文字のとき、後ろから見て最長の昇順文字列(接尾文字列)を取得し、最長の昇順文字列の1つ手前の文字より大きい中で接尾文字列に含まれる一番小さな文字を最後に付け足したい。

ここでsetが役に立つ。

コメント付きメモ。

  set<char> g;
  while (s.size()) {
    char c = s.back();
    s.pop_back();
    auto it = g.upper_bound(c);
    // cが詰めてきた文字より大きな文字の場合、it == g.end() => trueとなる
    if (it != g.end()) {
      // it: cより大きい中で一番小さな文字
      s += *it;
      cout << s << '\n';
      return 0;
    }
    g.insert(c);
  }
  cout << -1 << "\n";

提出

Submission #16563738 - AtCoder Grand Contest 022

参考

Submission #16520821 - AtCoder Grand Contest 022

clang-format on WSL on Windows with Visual Studio Code

この記事が助けになるかもしれない人

Windows 10上のVisual Studio CodeからWSLのUbuntuにremote接続して開発を行っている人が、clang formatを適用する。

適用方法

  1. WSL上のUbuntuにclang-formatをインストールする必要がある。

sudo apt-get update sudo apt-get install clang-format

  1. Visual Studio Codeにclang-formatのextensionをインストール

  2. Visual Studio Code上の設定「Clang-format: Executable」にclang-formatのパスを設定

パスを確認 $ which clang-format /usr/bin/clang-format

/usr/bin/clang-formatを「Clang-format: Executable」に設定

  1. 動いた!

0 1 BFS

0 1 BFSとは

betrue12.hateblo.jp

例題

D - Wizard in Maze

実装例

隣への移動はコスト0、ワープでの移動はコスト1なので、 隣への移動時はdequeの前に、ワープでの移動時はdequeの後に詰めることで、コストの低いところから探索を行うことができる。

ただし、一度訪れた点もコストが改善するときには再度訪問したいので、visitedフラグの管理での訪問判定は結局していない。 Submission #16206218 - AtCoder Beginner Contest 176

Atcoder Beginner Contest 174(バチャ)

C問題

大きな数を扱うときに文字列として扱う以外の方法を学んだのでメモ。

等比数列として考える

今回のC問題のi番目は、


7 \times (1 + 10 + 10^2 + \dots + 10^{i-1}) \\
= \frac{7(10^i -1)}9

と書ける。

大きな数の除算

ABC174 C問題のEditorial より引用。 https://img.atcoder.jp/abc174/editorial.pdf

 10^{999982} などといった巨大な値を直接  L で割ろうとするべきではありません。その代わ りに、 10i L で割った余りを  10 倍して  L で割れば、 10i+1 を L で割った余りが求まります。

D問題

仕切りを入れて、部分問題にわける。

E問題

sum(ceil(A_i / X) - 1) < kと条件を書き換えて、二分探索

F問題

...