2026-02-01から1ヶ月間の記事一覧
https://atcoder.jp/contests/abc446/tasks/abc446_c題意通りに書くだけですが、1.2秒もかかっています。 F_each <- function(D, A, B) { N <- length(A) p <- 1 # 今使う卵の仕入れ日 for(i in 1:N) { # i日目 while(B[i] >= A[p]) { B[i] <- B[i] - A[p] A…
https://atcoder.jp/contests/abc446/tasks/abc446_e3項の漸化式なので、前後のペアをノードとします。M2通りあります。そのノードを辿っていき、0が含まれずにループになったら条件を満たすノードです。 // Many LCMs #![allow(non_snake_case)] use std::c…
https://atcoder.jp/contests/abc446/tasks/abc446_dその値が最後となる列で最も長いものの長さを保持しておけばよいです。 // Max Straight #![allow(non_snake_case)] use std::cmp::max; use std::collections::HashMap; //////////////////// library //…
https://atcoder.jp/contests/abc445/tasks/abc445_gたまには解説を見ようかと思って開いたら「二部グラフ」をいう単語が見えてすぐに分かりました。これは二部グラフになるのですね。例えば、入力例1のようにA=1, B=2なら、一歩動くとi+jの偶奇が変わります…
https://atcoder.jp/contests/abc445/tasks/abc445_f回のの最短距離をとすると、回のの最短距離は、 となります。 行列を掛け算と同じように転置してみましたが、変わらないですね。N=1024だと2倍速かったです。 // Exactly K Steps 2 #![allow(non_snake_ca…
https://atcoder.jp/contests/abc445/tasks/abc445_eLCMの各素数の個数を保持しておくと、Aの要素を除いたときにその要素の素数の個数がLCMより小さければその素数はに関してLCMは変化なしです。ただし、個数が同じならどうすればいいかわかりません。そのと…
https://atcoder.jp/contests/abc445/tasks/abc445_d必ず全体の高さか幅と同じピースがあるので、それを配置して残りを全体とします。これを繰り返します。 // Reconstruct Chocolate #![allow(non_snake_case)] use std::collections::{HashSet, HashMap}; …
https://atcoder.jp/contests/abc444/tasks/abc444_e左から見ていってそこをRとすると前回のLから右に動かします。そうしたときに、 を求めます。本当はバランス木を作ればいいのですが、面倒なのでAをソートしてSegment木を作って、その値が範囲にあるのか…
https://atcoder.jp/contests/abc444/tasks/abc444_d和を求める問題はだいたい和の順序を入れ替えればよいです。この問題では、各桁にいくつ1があるかを調べて、繰り上がりを考慮して数字に直して、最後に出力します。 // Many Repunit Sum #![allow(non_sna…
https://atcoder.jp/contests/abc443/tasks/abc443_e上にしか行かないので下からたどり着けるマスかどうか調べます。各列の一番下の壁を持っておきます。 // Climbing Silver #![allow(non_snake_case)] //////////////////// library //////////////////// …
https://atcoder.jp/contests/abc443/tasks/abc443_c逐次実行すると遅いと思っていましたが、意外と速いですね。実質100msかかっていないです。 v <- scan("stdin", numeric()) N <- as.integer(v[1]) T <- as.integer(v[2]) if(N == 0) { A <- c() } else {…
https://atcoder.jp/contests/abc443/tasks/abc443_dまず一番上から考えて、その隣を上げることにします。隣が自分より2以上低ければそこを1低いところまで上げます。その隣は考えてはいけません。例えば、1 2 4 1となっていたら、2はそのままでよくて、4を3…