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

AtCoder Beginner Contest 399 D

https://atcoder.jp/contests/abc399/tasks/abc399_dAの隣同士のペアが2回出てくればだいたいよいです。 // Switch Seats #![allow(non_snake_case)] //////////////////// library //////////////////// fn read<T: std::str::FromStr>() -> T { let mut line = String::new(); st</t:>…

AtCoder Beginner Contest 398 D

https://atcoder.jp/contests/abc398/tasks/abc398_d風で煙を動かすのではなく、原点とRCを風と反対方向に動かします。 // Bonfire #![allow(non_snake_case)] use std::collections::HashSet; //////////////////// library //////////////////// fn read<T: std::str::FromStr>()</t:>…

AtCoder Beginner Contest 397 D

https://atcoder.jp/contests/abc397/tasks/abc397_dパッと見、 だから、Nを素因数分解して約数を出して、 を解きます。 となるので、これが平方数でAと偶奇が同じでyが正なら解となります。 ただ、ふつうに試し割りすると109まで割らないといけないので間に…

AtCoder Beginner Contest 396 F

https://atcoder.jp/contests/abc396/tasks/abc396_fまず初期の転倒数を数えます。入力例2 5 6 5 3 5 0 1で、最小の0より左の数を数えます。このとき、 1 1 1 1 1という配列を用意しておいて、Aの0の位置より左の和を数えます。そして、その位置を0にします…

AtCoder Beginner Contest 396 E

https://atcoder.jp/contests/abc396/tasks/abc396_eノードXとYを重みWで結ぶ無向グラフと考えます。 入力例1では、A1=vとすると、グラフを辿って、A2=v XOR 3、A3=v XOR 4となります。なので、 (v XOR 0) + (v XOR 3) + (v XOR 4) を最小化するvを求めれば…

AtCoder Beginner Contest 396 D

https://atcoder.jp/contests/abc396/tasks/abc396_dノード数は10以下なので、すべてのパスについて調べるだけですね。 // Minimum XOR Path #![allow(non_snake_case)] //////////////////// library //////////////////// fn read<T: std::str::FromStr>() -> T { let mut line =</t:>…

AtCoder Beginner Contest 395 F

https://atcoder.jp/contests/abc395/tasks/abc395_f残った歯の高さを定めると簡単に成り立つか成り立たないか分かりやすいので、二分探索します。 // Smooth Occlusion #![allow(non_snake_case)] //////////////////// library //////////////////// fn re…

AtCoder Beginner Contest 395 E

https://atcoder.jp/contests/abc395/tasks/abc395_eただのダイクストラです。ただし、今がどちらのグラフなのかわからないといけないので、状態はノードとどちらのグラフかで、隣の状態は、そのグラフで一歩進むかグラフを反転するかです。 // Flip Edge #!…

AtCoder Beginner Contest 395 D

https://atcoder.jp/contests/abc395/tasks/abc395_d鳩と巣を直接結び付けると2の処理に時間がかかるので、巣じゃなくてかごを用意して、1は鳩とかごの処理に、2はかごと巣の処理にすればよいです。 // Pigeon Swap #![allow(non_snake_case)] use std::coll…

AtCoder Beginner Contest 394 E

https://atcoder.jp/contests/abc394/tasks/abc394_e始点と終点の両側から進めばいいと思います。入力例1の0⇒3なら、0の次は{a: [0], b: [1]}、3の前は{a:[2]}ですが、bは終点からはないのでaの([0], [2])のペアだけ残ります。こうやって進めていきます。た…