競技プログラミング

競技プログラミング

【C#】ABC448 C問題のみ備忘録

ここで重要なのは3つ。この問題のクエリ処理では配列Aの要素に対する変更がない。Kの制約が5までと少ない。Aから効率良く最小値を取り出すには並び替えの必要がある。Aの配列は制約上109程度まで大きくなるが、実際に評価するのはAを昇順に並び替え...
競技プログラミング

【C#】ABC367 C問題のみ備忘録

探索の必要があるものの制約はさほど大きくなく計算してみても最大58=390625程度、であれば全列挙した上で条件に合わないものを弾けばいい。全列挙するには再帰か、QueueやStackをWhileでぶん回す、全部ループを書くなどがあるが、ど...
競技プログラミング

【C#】ABC363 C問題のみ備忘録

Sを並び替えて有り得る組み合わせの中で、Kの長さの回文を含まない組み合わせの数を答える問題。で、その列挙のためのC++やPythonにあるnext_permutationはどこ? というのがC#で解くにあたって最も困難な部分。これが使用する...
競技プログラミング

【C#】ABC444 C問題のみ備忘録

愚直に有り得る組み合わせを試していったらMLE(メモリ制限超過)した。愚直過ぎた。悔しい。解説制約と問題の性質上、有り得るパターンを分けていけば探索の必要なくACできる。2つより多く分かれることを考えなくてよく、分かれなかったものが存在する...
競技プログラミング

【C#】ABC428 C問題のみ備忘録

問題の要約空文字列であるsにQ個のクエリを施し、その各クエリの直後にそれぞれの()が対応する「良い括弧列」であるかを判定する。クエリは800000あるので、「良い括弧列であるか」の判定をO(1)程度でできないと3秒に間に合わない。解説クエリ...
競技プログラミング

【C#】ABC418 C問題のみ備忘録

途中まで考え方は良かったけど、時間的に無理だったしそも微妙に考慮不足。解説を何度も読み返して、解法は合ってるはずなのに何故かWAが出る、と試行錯誤してたら結局それまで使ってたはずの二分探索のコードにバグがあったことが判明するまで2時間ほどあ...
競技プログラミング

【C#】ABC421 C問題のみ備忘録

AB2完灰コーダー言われてみれば確かにそうだな、みたいなことで考えが凝り固まっていていつもC問題が解けません。皆さんは先に行っててください。私はもう……いえ、後で必ず追い付きますので。公式解説の言い換え要点は3つ。'A'だけに注目し、それを...
競技プログラミング

【C#】ABC417 C問題のみ解説備忘録

筆者が数学苦手勢なので、そういう人向けです。数学得意な人からすれば同じことを言い方だけ変えて言いまくっているようなものです。使用環境 C# 11.0     .NET 7.0.20C問題はj-i=A+Aとなるようなiとjの組み合わせを数える...