gyouzasushi’s diary

競プロとか

今日の競プロ(2020/4/12) + AtCoder Beginner Contest 162 + Codeforces Round #633 (Div. 1)

AtCoder 5問 レーティング:1707→1705 (-2) :(
Codeforces 2問 rating : 1936→1884 (-52) :(
GCJ 1問
行動自粛コンテスト 3問

行動自粛コンテスト A - 登山

問題

マスの上下左右に辺をはってDijkstra

提出

行動自粛コンテスト B - 置き換え

問題

解説AC。
dp[i][j]=i回目の操作まで行い、末尾の要素がjとなるような場合の数」をする。これだと間に合わないように見えるが、jとして考えるのは A_1\times A_2 \times \ldots \times A_n \leq 10^6 の約数だけでいいので、実は間に合う。

提出

行動自粛コンテスト C - バス

問題

Dijkstra + 二分探索やる。K \leq 10^{15}をなぜか int で受け取っててなかなか合わなかった…。

提出

Google Code Jam 2020 Round 1A C - Square Dance

問題

昨日からずっとこれやってた。ACできてめちゃめちゃ嬉しい。

  • 次のラウンドで確認するのは前のラウンドで compass neighbor がいなくなった人だけ
  • 各人の compass neighbor が誰かが一瞬でわかるようにしておく

がポイント。

提出

ABC162 A - Lucky 7

問題

提出

ABC162 B - FizzBuzz Sum

問題

提出

ABC162 C - Sum of gcd of Tuples (Easy)

問題

std::gcd 便利〜

提出

ABC162 D - RGB Triplets

問題

  • S_i \neq S_jかつS_i \neq S_kかつS_j \neq S_k

(S_i,S_j,S_k)=('R', 'G', 'B'), ('R', 'B', 'G'), ('G', 'R', 'B'), ('G', 'B', 'R'), ('B', 'R', 'G'), ('B', 'G', 'R') ということなのでこれらを全部数えた。どう考えても ('R'の個数) × ('G'の個数) × ('B'の個数) でよかった……。

  • j-i \neq k-j

j-i = k-jの方が数えやすいので、そっちを数えてあとで引く。

提出

ABC162 E - Sum of gcd of Tuples (Hard)

問題

はい来たいつものやつ!!「gcd がGになるような数列は何通りあるか?」を1 \leq G \leq Kについて考えるやつ。
gcd がGになるためには、数列の全要素がGの倍数であることが必要。一方、全要素が 2G の倍数だと gcd はGではなく2Gになってしまうし、3G,4G,\ldotsの場合も同様。つまり、「 f(G)=gcd がGとなるような数列の数 」とすると、f(G)=(\frac{K}{G})^N-f(2G)-f(3G)-\ldots。これを上から順番に計算して、足す。
F解けなかったので明日やります

提出

Codeforces Round #633 (Div. 1) A - Powered Addition

問題

問題文を正しく理解するのに30分くらいかかった、英語難しい…。前から順番に合わせていけばOK。

提出

Codeforces Round #633 (Div. 1) B - Edge Weight Assignment

問題

  • minimum は割と簡単で、距離が奇数になる葉のペアがあれば3、なければ1(これは示せる)。適当に根を決めて深さを見た。
  • maximum はかなり悩んだ。距離が2のところは同じ重みじゃないとダメで、あとは全部違う重みを割り振ることができる(これは証明:AC)。

提出

コメント

コンテストいっぱいある日はやっぱり楽しい。冷えて悲しいのを差し引いてもね。