WCPC
AtCoder

ABC470参加記

2026年8月8日 A Akagi_shrine

前回の参加記(ABC469回)

はじめに

こんにちは。Akagi_shrineです。

なぜか本番ではうまいこといかないのに、練習で調子がいいときとかありますよね。

今回unratedで遅刻で参加しましたが、4冠できました。やっぱり遅延すると速くなるのは競プロの常識なんですかね。

結果サマリ

問題参加者名タイム言語
Ansubaru0:48Java
BCaffeineholic2:27Python
Cnsubaru14:11Java
DCaffeineholic32:45Python
E---
F---
G---

今週の出題

ABC470-A

問題ページ: A問題

問題文を表示

問題文

正整数 NN が与えられます。

NN 行出力してください。

ii 行目 (1iN1 \le i \le N) には、ii33 の倍数ならば Fizz を、33 の倍数でないならば ii を出力してください。

制約

  • NN11 以上 100100 以下の整数

入力

入力は以下の形式で標準入力から与えられる。

NN

出力

答えを出力せよ。

いわゆる FizzBuzz の簡易版です。 11 から NN までループを回し、i(mod3)==0i \pmod 3 == 0 の判定を行うだけです。

ABC470-B

問題ページ: B問題

問題文を表示

問題文

NN 個のボールがあります。各ボールは色 11 から色 NN までの NN 色のいずれかで塗られており、ii 個目 (1iN1 \le i \le N) のボールの色は CiC_i です。

あなたは 11 回の操作で好きなボール 11 つを好きな NN 色のいずれかに変更することができます。

全てのボールが同じ色になるようにするためには、最小で何回の操作が必要か求めてください。

制約

  • 1N1001 \le N \le 100
  • 1CiN1 \le C_i \le N
  • 入力される値は全て整数

入力

入力は以下の形式で標準入力から与えられる。

NN
C1C_1 C2C_2 \ldots CNC_N

出力

答えを出力せよ。

一番多く出現している色の個数を数え、全ボール数 NN からその一番多く出現している色の個数を引くことで最小操作回数が求まります。 配列などで出現回数をカウントすれば簡単に解けます。

ABC470-C

問題ページ: C問題

問題文を表示

問題文

長さ NN の整数列 A=(A1,A2,,AN)A=(A_1,A_2,\ldots,A_N) があります。はじめ、AA の要素は全て 00 です。

QQ 個のクエリが与えられるので、順に処理してください。クエリは 22 種類あり、以下のいずれかの形式で与えられます。

  • 1 x : AxA_x の値を 11 増やす。
  • 2 : i=1,2,,Ni=1,2,\ldots,N に対し、Ai1A_i \ge 1 ならば AiA_i の値を 11 減らす。

各クエリを処理した直後の A1,A2,,ANA_1,A_2,\ldots,A_N のビット単位 XOR を求めてください。

制約

  • 1N5×1051 \le N \le 5\times 10^5
  • 1Q5×1051 \le Q \le 5\times 10^5
  • 1xN1 \le x \le N
  • 入力される値は全て整数

入力

入力は以下の形式で標準入力から与えられる。

NN QQ
query1\text{query}_1
query2\text{query}_2
\vdots
queryQ\text{query}_Q

出力

QQ 行出力せよ。 ii 行目 (1iQ1 \le i \le Q) には、ii 番目のクエリを処理した直後の AA に対する A1,A2,,NA_1,A_2,\ldots,N のビット単位 XOR を出力せよ。

操作(クエリ1)は XOR の性質を利用すれば簡単です。 全体の減算操作(クエリ2)を高速に処理する設計が問われます。 要素ごとの値を愚直に更新すると TLE になるため、1以上の値があるかを保持するかを運用して効率的に XOR 和を更新することで計算量マジックで解けます。

ABC470-D

問題ページ: D問題

問題文を表示

問題文

(1,,N)(1,\ldots,N) の順列 P=(P1,,PN)P=(P_1,\ldots,P_N) が与えられます。

QQ 個のクエリを順に処理してください。クエリは以下の 22 種類です。

  • 1 x y : PxP_xPyP_y の値を入れ替える。
  • 2 : 以下の条件を満たす (1,,N)(1,\ldots,N) の順列 P=(P1,,PN)P'=(P_1',\ldots,P_N') を作り、P1,,PNP_1,\ldots,P_N の値をそれぞれ P1,,PNP_1',\ldots,P_N' で置き換える。
    • 1iN1 \le i \le N を満たすどの整数 ii についても、PPi=iP_{P_i'}=i を満たす。

すべてのクエリを処理したあとの P1,,PNP_1,\ldots,P_N の値を出力してください。

制約

  • 2N5×1052 \le N \le 5\times 10^5
  • 1Q5×1051 \le Q \le 5\times 10^5
  • (P1,,PN)(P_1,\ldots,P_N)(1,,N)(1,\ldots,N) の順列
  • 種類 11 のクエリにおいて、1x<yN1 \le x < y \le N
  • 入力される値はすべて整数

入力

入力は以下の形式で標準入力から与えられる。

NN QQ
P1P_1 P2P_2 \ldots PNP_N
query1\text{query}_1
\vdots
queryQ\text{query}_Q

出力

すべてのクエリを処理したあとの P1,,PNP_1,\ldots,P_N の値を、空白区切りで 11 行に出力せよ。

クエリ2で行う操作はインデックスソートなどと同じで「順列 PP の逆順列をとる」操作です。 N,Q5×105N, Q \le 5\times 10^5 であるため、クエリ2のたびに配列全体をソートしていると間に合いません。 通常状態と反転状態のフラグを保持し、通常状態と反転状態のどちらにいるかを管理しながらスワップ操作の対象を読み替えることで、各クエリを O(1)\mathcal{O}(1) で処理できます。

ABC470-E

問題ページ: E問題

問題文を表示

問題文

高橋君は神経衰弱のような 11 人ゲームで遊んでいます。

2N2N 枚のカードがあります。カードの表には数が 11 つ書かれており、カードの裏には何も書かれていません。

1iN1 \le i \le N を満たす各 ii について、AiA_i が書かれたカードはちょうど 22 枚あります。(AiA_i は相異なります)

高橋君はこれらのカードを使って次の手順でゲームを行います。

  1. 2N2N 枚のカードを裏向きの状態でシャッフルし、場に並べる。
  2. ライフを LL、スコアを 00 とする。
  3. ライフが 00 になるか、場のカードがなくなるまで以下を繰り返す。
    • 場の裏向きのカードを 11 枚選び表にし、書かれている数 XX を確認する。
    • 場の裏向きのカードを 11 枚選び表にし、書かれている数 YY を確認する。
    • X=YX=Y のとき、その 22 枚を場から取り除き、スコアを XX 増やす。
    • XYX \ne Y のとき、22 枚のカードを再び裏向きに戻し、ライフを 11 減らす。

高橋君がゲーム時のスコアを最大化するように最適に行動したときの、ゲーム終了時のスコアの期待値を求めてください。

制約

  • 1N2001 \le N \le 200
  • 1L2001 \le L \le 200
  • 1A1<A2<<AN1051 \le A_1 < A_2 < \ldots < A_N \le 10^5
  • 入力される値は全て整数

入力

入力は以下の形式で標準入力から与えられる。

NN LL
A1A_1 A2A_2 \ldots ANA_N

出力

答えを出力せよ。真の解との絶対誤差または相対誤差が 10510^{-5} 以下であれば正解として扱われる。

問題の文からDPの香りと、期待値とあることから神経衰弱の期待値DP問題であると推測できます。 期待値DPは解いたことがないので、解説を見てもいまいちわからなかったです。

最後に

今回は比較的得意な部類だと思います。

最近しょうもないミスをしている気がするので、精進していきたいと思います。

← 活動記事一覧に戻る