けんちょんの競プロ精進記録

競プロの精進記録や小ネタを書いていきます

最小回数・最小個数を求める

みんなのプロコン 2019 D - Ears (青色, 600 点)

郡山駅のベンチで寒さに震えながらやる問題ではなかった...必要以上に複雑にしてしまった。。。 問題へのリンク 問題概要 すぬけさんが、座標 0 と との間を行ったり来たりする。行って方向転換できる場所は整数座標のみである。 このとき、各区間 [ ] () に…

AOJ 1391 Emergency Evacuation (ICPC アジア 2018 C) (300 点)

結構好き!ソートすることが本質の問題としていい感じな気がする。 問題へのリンク 問題概要 下図のような「中央の通路とそこから横に伸びた乗り物に乗客がどこにいるかを表した地図」が与えられる。乗客は 人いる。各乗客は 1 秒かけて 1 マス移動できる。…

AtCoder AGC 029 D - Grid game (黄色, 800 点)

これは。。。C より先に確実にこれをとったのはよかった 問題へのリンク 問題概要 (意訳) H × W の二次元グリッドがあって、各マスは通路か壁である。壁は N 個ある。最初は (1, 1) に駒がある。 毎ターン (x, y) にある駒は (x + 1, y) に進める、ここで (x…

AOJ 2894 01 文字列と窓 (AUPC 2018 day3 F)

丁寧に考えれば解ける感じ 問題へのリンク 問題概要 0 と 1 のみかならなる長さ N のビット列 S, T が与えられる。S に以下の操作を好きな回数だけ行って T にするのに必要な最小回数を求めよ。 (というクエリが Q 回投げられる) S の最も右にある 1 を含む…

AtCoder AGC 008 A - Simple Calculator (茶色, 300 点)

もれなく正確に解くための考え方とかが問われる感じ。 問題へのリンク 問題概要 整数 が与えられる。 に以下のいずれかの操作を最小回数行って に一致させよ: を 1 増やす を にする 解法 最適解は 最初に反転する (かしないか) 「1 増やす」を繰り返す 最後…

Codeforces Manthan Codefest 18 (Div. 1 + Div. 2) C. Equalize (R1300)

超苦手系。なんとか解けた。 問題へのリンク 問題概要 長さ N のバイナリ列 a, b が与えられる。a に対して 隣接二項を swap する 0 と 1 を反転する の操作を最小回数行って b にせよ。(10 -> 01 なら 1、1000 -> 0001 なら 2) 制約 1 <= N ,= 106 考えたこ…

AtCoder AGC 026 A - Colorful Slimes 2 (灰色, 200 点)

最初スライムの色の種類が 種類かと思ってしまって、 の場合が面倒じゃないかと思ってしまった。 Colorful Slimes 2 へのリンク 問題概要 (AGC 026 A) 1〜10000 の整数からなる 要素の数列が与えられる。 数列の好きな箇所を選んで 1〜10000 のうちの好きな…

AtCoder ABC 101 C - Minimization (ARC 099 C) (緑色, 300 点)

ARC 099 C - Minimization 問題概要 1〜N の順列が与えられる。以下の操作を最小回数繰り返すことにより、全部 1 にせよ。 連続する K 個の区間を選んで、その区間のすべての数をその区間にある最小の数に置き換える 制約 1 <= K <= N <= 105 解法 間違いや…

AtCoder ARC 097 E - Sorted and Sorted (黄色, 600 点)

600 にしちゃムズイ。 ARC 097 E Sorted and Sorted 問題概要 (白, 1), (白, 2), ..., (白, N), (黒, 1), (黒, 2), ..., (黒, N) の 2N 個の要素の順列が与えられる。「隣同士を swap する」を最小回数行うことで、「白」についても「黒」についてもソートさ…

CS Academy 061 F - Xor the Graph (超鮮やかなオイラー閉路!)

こうきさんに聞いて解いてみた。 木を最小個数のパスで被覆する問題はとりあえず2種類あって、辺の重複ありの場合は昨日のCSA 069 D. Cover the Treeで適切に葉同士で繋ぐ感じにする。辺の重複無しの場合は奇数次の点に適当に辺を張ってオイラー閉路作って切…

CS Academy 069 DIV2 C - Build Correct Brackets (最短経路数も一緒に求める最短路!)

まさにこれだったん。 CSA 069 DIV2 C Build Correct Brackets ()()))(())() のようなカッコ列が与えられる。 最小回数flipして正しいカッコ列にせよ。 また最小回数flipで正しいカッコ列にする方法の数を数え上げよ。 ・1 <= 文字列長 <= 2500 まさに最短路…