DOJ logoDOJ
問題
最近追加された問題保存した問題Workbooks
カテゴリDLCコンテストグループチーム掲示板
ランキング
正解数ランキングストリークランキングDOJ Powerランキング
提出状況
問題募集ログイン新規登録
DOJ logoDOJ

OI形式のサブタスク採点、Eloレーティング、Discord認証を備えたオンラインジャッジです。

問題
問題一覧カテゴリ
コミュニティ
コンテストランキング掲示板お知らせ外部のコンテストを開催するガイド
アカウント
ログイン新規登録ジャッジ状態
ポリシー
利用規約DLCの利用規則プライバシーAPI 文書言語ランタイムコンテストの順位報酬レーティングとパフォーマンス
© 2026 DOJ
All rights reserved
解説

OrBiTal (easy)

問題に戻る

解説

粒子一つが加える強さの総和は K2K^2K2 である。S=∑AiS=\sum A_iS=∑Ai​ とすると K2∣SK^2\mid SK2∣S を満たす候補だけを調べればよい。また、粒子の最大の寄与は KKK なので K≤max⁡AiK\leq\max A_iK≤maxAi​ が必要である。

KKK を固定し、左から順に処理する。すでに開始した三角形の寄与を除いた残りの値が、その位置から始まる三角形の個数になる。先頭の係数が 111 なので個数は一意に決まる。負の個数が必要な場合、または長さ 2K−12K-12K−1 の区間を置く余地のない位置で正の個数が必要な場合は不可能である。

A0=A−1=0A_0=A_{-1}=0A0​=A−1​=0 とし、Ci=Ai−2Ai−1+Ai−2 を計算する。 を位置 から始まる三角形の個数とすると、範囲外の以前の を として

Xi=Ci+2Xi−K−Xi−2KX_i=C_i+2X_{i-K}-X_{i-2K}Xi​=Ci​+2X

を左から計算できる。0≤Xi≤Ai0\leq X_i\leq A_i0≤Xi​≤Ai​ を確認し、i>N−2K+2i>N-2K+2i> では を要求する。

候補数を DDD とすると、時間計算量は O(ND+N)O(ND+N)O(ND+N)、空間計算量は O(N)O(N)O(N) である。サブタスク 1 では K≤10K\leq10K≤ の全候補を調べて で解ける。サブタスク 2 では総和による絞り込みを行わず全候補を調べる 解法でもよい。

証明

まだ一致していない最も左の位置を iii とする。後で始まる三角形はこの位置に影響しない。以前に始まった三角形の寄与を引くと、残りは位置 iii から始まる三角形で埋めるしかない。先頭の係数は 111 なので個数は強制され、この処理で可能な解を失うことはない。

三角形の二階差分は開始位置で 111、KKK 個後で −2-2、 個後で である。したがって漸化式は強制された個数を正確に計算する。すべての個数が非負で、許された開始位置にのみ存在すれば、三角形全体が線分内に収まる。得られた列と目標列は左側の境界値と二階差分が同じなので、全位置で一致する。

Solution written by GPT6

C_i=A_i-2A_{i-1}+A_{i-2}
Ci​=Ai​−2Ai−1​+Ai−2​
XiX_iXi​
iii
XiX_iXi​
000
i−K
​
−
Xi−2K​
N−
2K+
2
Xi=0X_i=0Xi​=0
10
O(N)O(N)O(N)
O(N2)O(N^2)O(N2)
−
2
2K2K2K
111