2023-09-01から1ヶ月間の記事一覧

アルゴリズムと数学 104

https://atcoder.jp/contests/math-and-algorithm/tasks/math_and_algorithm_bxランダムにグラフを作ります。1点から少しずつエッジを追加していきます。次に進むノードが既存のノードか新規のノードかを確率で選びますが、新規ノードの確率を少しずつ減らし…

AtCoder Beginner Contest 321 F

https://atcoder.jp/contests/abc321/tasks/abc321_fこの手の場合の数は母関数です。 として、の係数が場合の数です。 このコードだと、下9桁を答えるでも成り立ちますね。 // #(subset sum = K) with Add and Erase #![allow(non_snake_case)] ////////////…

AtCoder Beginner Contest 321 E

https://atcoder.jp/contests/abc321/tasks/abc321_e2進で考えるとよいです。 始点から上と下に分けて考えます。上は一つ上がって、そこから今来たノードと違うノードの下を探ります。Kが大きければさらに上も見ます。下はKが大きすぎるときに注意が必要です…

AtCoder Beginner Contest 321 D

https://atcoder.jp/contests/abc321/tasks/abc321_dAは昇順、Bは降順にして、Bの累積を計算しておいて、しゃくとり法っぽく計算します。 // Set Menu #![allow(non_snake_case)] //////////////////// library //////////////////// fn read<T: std::str::FromStr>() -> T { let m</t:>…

アルゴリズムと数学 103

https://atcoder.jp/contests/math-and-algorithm/tasks/math_and_algorithm_bw点数がつくだけなのでどうやってもいいですが、正六角形上に並べた方が正方形に並べるよりは効率がよいので、中心を適当に変えて100個並べられて最も大きな半径を求めます。 よ…

アルゴリズムと数学 102

https://atcoder.jp/contests/math-and-algorithm/tasks/arc117_c手を動かした方がいい問題ってありますよね。 B → 0, W → 1, R → 2 と読み替えて、下がxとyだった時に上をf(x, y)と表すと、 f(0, 0) = 0 f(0, 1) = 2 f(0, 2) = 1 f(1, 0) = 2 f(1, 1) = 1 f…

AtCoder Regular Contest 165 A

https://atcoder.jp/contests/arc165/tasks/arc165_aNが素数か素数べきならNoだとすぐにわかります。それ以外なら、和のほうで足りない分を1で埋めればいいだけです。 // Sum equals LCM #![allow(non_snake_case)] //////////////////// library //////////…

AtCoder Beginner Contest 320 F

https://atcoder.jp/contests/abc320/tasks/abc320_f0からたどっていけば、座標と残り燃料を状態にして、金額最小を記憶するDPにすればよさそうですが、復路で給油できるかどうかわからないのでどこで給油したのか記憶しなければいけません。しかし、そうす…

AtCoder Beginner Contest 320 E

https://atcoder.jp/contests/abc320/tasks/abc320_eそうめんが流れてくるのと人が戻ってくるのをイベントとして、PriorityQueueに突っ込みます。ただ、そうめんが流れてくるイベントと人が戻ってくるイベントを別構造体とすると、なかなか大変です。結局、p…

AtCoder Beginner Contest 320 D

https://atcoder.jp/contests/abc320/tasks/abc320_dグラフを作って1からたどります。 // Relative Position #![allow(non_snake_case)] //////////////////// library //////////////////// fn read<T: std::str::FromStr>() -> T { let mut line = String::new(); std::io::stdin</t:>…

アルゴリズムと数学 101

https://atcoder.jp/contests/math-and-algorithm/tasks/typical90_o選んだボールの1、選ばれなかったボールを0と表すと、例えばN=5で1と4が選ばれたら、10010と表現できます。 出力例を見ると、下のほうは差が等差数列になっていて簡単そうですね。一方、k…

アルゴリズムと数学 100

https://atcoder.jp/contests/math-and-algorithm/tasks/math_and_algorithm_bv という行列を考えると、1秒進めると となります。T秒後には、 となります。 行列の乗算、べき算のコードをいろんな数値で成り立つようにしてみました。AIが書いてくれるから簡…

AtCoder Beginner Contest 319 E

https://atcoder.jp/contests/abc319/tasks/abc319_e多くても1~8の最小公倍数しかパターンがないはずなので、最初にそのときの移動時間を計算しておけばよいです。 // Bus Stops #![allow(non_snake_case)] //////////////////// library /////////////////…

AtCoder Beginner Contest 319 D

https://atcoder.jp/contests/abc319/tasks/abc319_dWが決まれば行数は簡単に決まるので、Wを二分探索すればよいですが、Wを変えても行数が変わらないことがあるのがいやらしいですね。 // Minimum Width #![allow(non_snake_case)] //////////////////// li…

アルゴリズムと数学 099

https://atcoder.jp/contests/math-and-algorithm/tasks/typical90_amグラフを作って、1をルートにして木を辿っていくと計算できます。木のルートを端点とする距離とそれ以外の距離とを分けるとうまくいきます。 イジワルな入力で再帰が深くなるようなものだ…

アルゴリズムと数学 098

https://atcoder.jp/contests/math-and-algorithm/tasks/math_and_algorithm_bu内部の点なら、その点と各辺からなる角度の和が2πや-2πになるはずです。外部の点なら0になります。なお、角度は符号を考えます。これは外積を使うと計算できます。 // Polygon a…

AtCoder Beginner Contest 318 D

https://atcoder.jp/contests/abc318/tasks/abc318_dNが16以下なのでしらみつぶしでしかもメモ化も使わなくてよいのですが、奇数のときが // Avoid Eye Contact #![allow(non_snake_case)] use std::ops::Add; use std::collections::VecDeque; ////////////…

AtCoder Beginner Contest 318 E

https://atcoder.jp/contests/abc318/tasks/abc318_eAが同じ位置をまとめて、kが小さいほうから順に計算していけばよいです。 // Sandwiches #![allow(non_snake_case)] use std::collections::HashMap; //////////////////// library //////////////////// …

アルゴリズムと数学 097

https://atcoder.jp/contests/math-and-algorithm/tasks/math_and_algorithm_bt部分的にエラトステネスの篩を行うのはよくあることですが、1が入っていると処理が難しいので、Lが1なら2から始めることにしました。 // Primes in an Interval #![allow(non_sn…

アルゴリズムと数学 096

https://atcoder.jp/contests/math-and-algorithm/tasks/abc204_d2つに分けてトータル時間が半分に近くなればよいですが、どの時間が実現可能かはDPで簡単に分かるので、半分以上で半分に近い実現可能な時間を探せばよいです。 // Cooking #![allow(non_snak…