はい!今やってます!

Work Pertly, Live Idly

競プロやっていき

main

fn main() {
  println!("Please input.");
  let input = read_vec::<usize>();
  plrintln!("{:?}", input)
}

fn read<T: std::str::FromStr>() -> T {
    let mut s = String::new();
    std::io::stdin().read_line(&mut s).ok();
    s.trim().parse().ok().unwrap()
}

fn read_vec<T: std::str::FromStr>() -> Vec<T> {
    let mut s = String::new();
    std::io::stdin().read_line(&mut s).ok();
    s.trim().split_whitespace()
      .map(|e| e.parse().ok().unwrap()).collect()
}

メソッドやアイデア

cmp::min(1, 2) // 小さい方
hoge.abs() // 絶対値
lower_bound

※A1,A2,...,ANA1,A2,...,AN の中で VV より低い値が何個あるかを O(log2N)で求めてくれる

基礎

コンピューターが計算できるのは1秒間に108 ~ 109 なので、2億 ~ 10億通りの探索を超える場合は別の方法を検討

計算量

logn < √n < n < nlogn < n^2 < 2^n < n!

アルゴリズム12選

全探索(bit 全探索、順列全探索を含む)

たのしい探索アルゴリズムの世界【前編:全探索、bit全探索から半分全列挙まで】 - Qiita

  • すでにわかっているものを探索しない
  • 探索の通り数を絞り込む
  • 別の視点から全探索

深さ優先探索(DFS) ※再帰関数を用いた全探索

幅優先探索(BFS)

二分探索

たのしい探索アルゴリズムの世界【前編:全探索、bit全探索から半分全列挙まで】 - Qiita

動的計画法(bitDP などを含む)

ダイクストラ法(最短経路問題)

ワーシャルフロイド法(最短経路問題)

クラスカル法(最小全域木問題)

高速な素数判定法

べき乗を高速に計算するアルゴリズム

逆元を計算するアルゴリズム

累積和

データ構造(3 個)

グラフ(グラフ理論

Union-Find

リポジトリ一括で落として来たいときに打つコマンド

特定のユーザーで特定のオーガナイザーションのGithubリポジトリを一括でCloneしてきて、zipにまとめたい時に叩くコマンド

mkdir `date '+%Y%m%d'` && curl -u ${USER_NAME} "https://api.github.com/orgs/${ORGANIZATION}/repos?per_page=100&page=1" | grep clone_url | awk -F'"' '{ print $4 }' | xargs -I{} git -C ./`date '+%Y%m%d'`/ clone {} && zip -r `date '+%Y%m%d'`.zip `date '+%Y%m%d'` 

Nuxtでnuxt-link(n-link)にリンクのアンダーラインを表示したくないとき

nuxt-link(n-link)を使うと自動的にアンダーラインが引かれるのでデザイン的に困っちゃうことがあると思う。
これはnuxt-linkがaタグを吐くからなんだけど、tagオプションを指定してやると、吐き出すタグを指定することができる。
以下のようにdivタグを吐き出して、class指定して普通にCSS吐き出してやればOK。
もちろんaタグのCSS書き換えてもいいし、classだけ指定してCSS書き換えるのもOK。

<nuxt-link
  to="/hoge/fuga"
  tag="div"
  class="c-p"
>
.c-p {
  cursor: pointer;
}