2026-03-01から1ヶ月間の記事一覧

AtCoder Beginner Contest 451 E

https://atcoder.jp/contests/abc451/tasks/abc451_e入力例1を見ると、重みが2と3があるので、これが辺だとわかります。ただ、こういう考え方だとうまく手順が作れない気がします。 そこで最小の2の辺を一つ取ると、頂点1と頂点2が辺です。次にこの頂点1と頂…

AtCoder Beginner Contest 451 D

https://atcoder.jp/contests/abc451/tasks/abc451_d小さい順に出せばいいので、PriorityQueueを使います。そのとき、ある数の次の数が重要になりますが、2つあって、その数の右に1を追加するかのと、1を追加したあとに2に置き換えるなどがあります。128のよ…

AtCoder Beginner Contest 450 E

https://atcoder.jp/contests/abc450/tasks/abc450_e文字列の列は、ある程度大きくなったら前の方は変わらないので、Rを超える長さまで長さだけ作っておきます。それをとすると、それはとの結合なので、範囲はそのどちらかか結合部をまたぐかで再帰的に添え…

AtCoder Beginner Contest 450 D

https://atcoder.jp/contests/abc450/tasks/abc450_dKをどこまで足せばいいという話ですが、基本的にはKの剰余を考えればいいです。入力例1なら3, 1, 9になりますが、3と1に10を足せば、13と11になって最大差が4ということです。要するに、一番空いていると…

AtCoder Beginner Contest 449 D

https://atcoder.jp/contests/abc449/tasks/abc449_d1行ずつカウントすれば余裕ですが、コードにあるように、(0, L]に含まれる黒を数える関数を作っておくとわかりやすいです。 // Make Target 2 #![allow(non_snake_case)] //////////////////// library //…

AtCoder Beginner Contest 448 E

https://atcoder.jp/contests/abc448/tasks/abc448_eMDの剰余で計算すればよいです。cがl個続く10進整数は繰り返し二乗法と同様に計算できます。 // Simple Division #![allow(non_snake_case)] //////////////////// library //////////////////// fn read<T: std::str::FromStr>(</t:>…

AtCoder Beginner Contest 448 D

https://atcoder.jp/contests/abc448/tasks/abc448_d頂点1から辿っていくだけですね。その際にAを追加していって、すぐに2つ以上あるAがあるかすぐに分かるようなデータ構造を作っておきます。 // Integer-duplicated Path #![allow(non_snake_case)] //////…

AtCoder Beginner Contest 447 C

https://atcoder.jp/contests/abc447/tasks/abc447_c尺取り法的にカウントしていけばよいです。 F <- function(S, T) { k <- 1 l <- 1 L1 <- nchar(S) L2 <- nchar(T) counter <- 0 while(k <= L1 && l <= L2) { c1 <- substr(S, k, k) c2 <- substr(T, l, l…

AtCoder Beginner Contest 447 F

https://atcoder.jp/contests/abc447/tasks/abc447_fノードごとの次数(直接つながっているノードの数)を調べます。そのとき次数が3以上から始まって、4以上が続いて、3以上で終わるパスを調べます。そのために、3以上のみでなるエッジで新しいグラフを作り…

AtCoder Beginner Contest 447 E

https://atcoder.jp/contests/abc447/tasks/abc447_e最小カット問題のように見えますが、そのアルゴリズムだと全然間に合いません。 コストが2のindex乗なので、カット集合同士でコストを比較すると各集合で最大のindexが違っていればそれが大きい方が大きい…

AtCoder Beginner Contest 447 D

https://atcoder.jp/contests/abc447/tasks/abc447_dAはなるべく左から取ったほうがよくて、BもAより右でなるべく左から取ったほうがよくて、という感じなので、尺取り法的に行えばよいです。 // Take ABC 2 #![allow(non_snake_case)] ////////////////////…