コンテスト時間: 2025-04-12(土) 21:00 ~ 2025-04-12(土) 22:40 (100分)
A - Status Code
Difficulty: ??? / NoviSteps: 8Q
解答時間: 1:13
以上
以下の整数
が与えられるので、
が
以上
以下のとき
Success、そうでないときFailureと出力せよ。
を受け取り、言われたとおりに条件分岐してやればよい。
B - Unauthorized
Difficulty: ??? / NoviSteps: 6Q
解答時間: 2:45
- 高橋くんはあるウェブサイトに対して
回の操作を行った(操作4種類は省略)。高橋くんがログインしていない状態で非公開ページにアクセスした時、ウェブサイトは認証エラーを返す。はじめ、高橋くんはログインしていない状態である。
回の操作のうち、高橋くんが認証エラーを受け取った回数を出力せよ。
- 現在のログインフラグを持っておくと、認証エラーになるのは、「フラグが立っていない状態で
privateである」とき。 - あとは操作をシミュレーションしながらこのような
の個数をカウントしていけばよい。
C - K-bonacci
Difficulty: ??? / NoviSteps: 3Q
解答時間: 10:01
- 正整数
が与えられる。長さ
の数列
の各要素の値を、以下の方法で定義するとき、
を
で割った余りを求めよ。
のとき、
のとき、
- 素直にやると
のときの
の計算に
の時間がかかってしまう。
- ここを累積和で処理して
に高速化すれば、全体を
で計算できる。
- mod の計算には、 ACL の
modintを使うと楽。なんででないのかは謎。
D - Logical Filling
Difficulty: ??? / NoviSteps: 1D
.,o,?のみからなる長さの文字列
が与えられる。全ての
?をそれぞれ.またはoで置き換えて得られる文字列のうち、以下の条件を全て満たすものの集合をとする(
が空集合出ないことは保証される)。
oの個数がちょうど個
oが連続しない
- 以下を満たす、長さ
の文字列
を出力せよ。
に含まれる全ての文字列の
文字目が
.である場合:.に含まれる全ての文字列の
文字目が
oである場合:o文字目が
.である文字列もoである文字列もに含まれている場合:
?
- まず、
oは隣接して配置できないので、oに隣接している?は.で確定する。 - その上で、もし
内の
oの個数がに等しいならば、それ以上
oは配置できないので、残りの?を全て.に置き換えて出力する。 内の
oの個数がよりも少ないとき、連続した
?の区間(seg)を抽出してくる。このsegそれぞれに対して、可能な限りoを詰めこむことを考える。このときのoの個数は、segの長さとして
個である。全ての
segに対するこの個数の総和をとする。
のとき、
segの長さが奇数であるものについてはoと.を交互に配置する方法で一意に定まるが、偶数であるものについては先頭をoにするか.にするかで2通り考えられるので確定しない。- 問題は
のときなのだが、このときの処理がよくわからずごまかして提出したら WA になってしまった(他の箇所でバグっていたのかもしれない)。
- 結論としては、
そのものを出力してしまえばよいようだ(証明は公式解説参照)。
結果
Performance: 942
1003 → 997 (-6)
そろそろ停滞期に入ってきたか...?