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

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

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

チョンリンのゲーム開発 (Hard)

問題に戻る

解説

1. 作業回数と日数

共通の最終進捗を TTT、必要な日数を mmm とする。作業 iii を選ぶ回数は ci=(T−ai)/bic_i=(T-a_i)/b_ici​=(T−ai​)/bi​ である。次の条件が必要十分である。

ci∈Z≥0,∑i=1Nci=Km,max⁡ici≤m.c_i\in\mathbb Z_{\ge0},\qquad \sum_{i=1}^N c_i=Km,\qquad \max_i c_i\le m.ci​∈Z≥0​,

必要性は明らかである。十分性を示すため、残りの日数が m>0m>0m>0 のとき、残り回数が大きい順に KKK 個の作業を選ぶ。正の回数を持つ作業は少なくとも KKK 個あり、回数が mmm の作業は高々 KKK 個なので、これらはすべて選ばれる。選んだ回数を 11 ずつ減らすと、合計は 、最大値は 以下になる。これを繰り返せば有効な日程を構成できる。

2. 最終進捗の範囲

C=1018C=10^{18}C=1018、H=max⁡iaiH=\max_i a_iH=maxi​a、 とする。進捗は減少せず、各作業は 日に高々 回選ばれるため、 の解は必ず を満たす。入力の保証より、この範囲に の解がなければ不可能である。 だけでは は保証されないため、日数も別途確認する。

3. 一般化された中国剰余定理

すべての cic_ici​ が整数となるには、T≡ai(modbi)T\equiv a_i\pmod{b_i}T≡ai​( が必要である。併合済みの条件を 、 とし、初期値を とする。次の条件に を代入すると、 を得る。

g=gcd⁡(D,bi)g=\gcd(D,b_i)g=gcd(D,bi​) が ai−ra_i-rai​ を割り切らなければ不可能である。そうでなければ、 として

x≡ai−rg(Dg)−1(modq)x\equiv\frac{a_i-r}{g}\left(\frac Dg\right)^{-1}\pmod qx≡gai​−r​

から 0≤x<q0\le x<q0≤x<q を求め、r←r+Dxr\leftarrow r+Dxr←r+Dx、D←DqD\leftarrow DqD← と更新する。 なら とする。逆元は拡張ユークリッドの互除法で求める。

併合中に D>UD>UD>U となった場合、[0,U][0,U][0,U] 内の候補は rrr だけである。併合を止め、T=rT=rT=r について入力全体の合同条件、範囲、回数の合計、最大回数、日数の上限を直接確認する。まだ併合していない条件も必ず確認する。

4. 一次式と下限

すべての条件を併合した後も D≤UD\le UD≤U なら、T=r+DtT=r+DtT=r+Dt と置く。次はすべて整数である。

αi=r−aibi,βi=Dbi,A=∑iαi,W=∑iβi.\alpha_i=\frac{r-a_i}{b_i},\quad\beta_i=\frac D{b_i},\quad A=\sum_i\alpha_i,\quad W=\sum_i\beta_i.αi​=b

すると ci=αi+βitc_i=\alpha_i+\beta_i tci​=αi​+βi​t、 である。 より、 が増えると日数も増える。まず とする。

ci≤mc_i\le mci​≤m を整理すると (Kβi−W)t≤A−Kαi(K\beta_i-W)t\le A-K\alpha_i(Kβi​− となる。 の場合は下限

t≥⌈Kαi−AW−Kβi⌉t\ge\left\lceil\frac{K\alpha_i-A}{W-K\beta_i}\right\rceilt≥⌈W−Kβi​Kα

が得られるので、これらで ℓ\ellℓ を更新する。それ以外の作業は最後の候補で確認する。分子が負の場合も切り上げ除算を正しく実装する必要がある。

5. 合同条件を満たす最初の候補

回数の合計が KKK の倍数になる必要があるため、Wt≡−A(modK)Wt\equiv-A\pmod KWt≡−A(modK) を解く。g=gcd⁡(W,K)g=\gcd(W,K)g= が を割り切らなければ不可能である。そうでなければ両辺を で割り、逆元を用いて 、、 と表す。 なら とする。下限以上の最初の候補は

t∗=t0+P⌈ℓ−t0P⌉t_*=t_0+P\left\lceil\frac{\ell-t_0}{P}\right\rceilt∗​=t0​+P⌈

である。まず t∗≤⌊(U−r)/D⌋t_*\le\lfloor(U-r)/D\rfloort∗​≤⌊(U−r)/D⌋ を確認する。満たさなければ大きな乗算を行わず不可能とする。満たすなら T=r+Dt∗T=r+Dt_*T= を計算し、元の条件をすべて直接確認する。

6. 候補を一つだけ調べればよい理由

Kβi<WK\beta_i<WKβi​<W の条件は下限に反映済みである。それ以外では (Kβi−W)t(K\beta_i-W)t(Kβi​− は減少しないため、最初の候補が不等式を満たさなければ、それ以降も満たさない。日数 も増加するので、最初の候補で なら後の候補も不可能である。したがって、最初の候補が成功すれば最適であり、失敗すれば解はない。

7. 整数の範囲と計算量

U≤1027+109U\le10^{27}+10^9U≤1027+109 であり、D≤UD\le UD≤U の間だけ併合するため、新しい周期は である。逆元との乗算前に剰余を取る。一次式の合計や下限の分子の絶対値は 以下に収まる。候補と の乗算は範囲を確認してから行い、日数は から回数を再計算して求める。したがって、この実装の中間値はすべて符号付き ビット整数に収まる。制限なしで最小公倍数を最後まで求めたり、範囲外の候補に を掛けたりしてはいけない。

B=max⁡ibiB=\max_i b_iB=maxi​bi​ とすると、固定長整数演算での時間計算量は O(Nlog⁡B+log⁡K)O(N\log B+\log K)O(N、空間計算量は である。

8. 小課題の解法

小課題 1 では bi=1b_i=1bi​=1 である。di=H−aid_i=H-a_idi​=H−、、 と置くと、 と を得る。 なら最初から等しい場合だけ可能である。それ以外では下限を求め、 の剰余を から まで列挙して 時間で解ける。

小課題 2 では、最終進捗を HHH から 100 000100\,000100000 まで列挙して必要十分条件を確認する。D≤lcm⁡(1,2,3,4,5)=60D\le\operatorname{lcm}(1,2,3,4,5)=60D≤lcm(1,2,3,4,5)=、、 より、上記の最初の候補は 、実現可能な最小の進捗は 未満である。よって、この列挙範囲で十分であり、時間計算量は である。小課題 3 では全体の解法を用いる。

Solution written by GPT

i=1∑N​
ci​
=
Km,imax​ci​≤
m.
1
K(m−1)K(m-1)K(m−1)
m−1m-1m−1
i
​
U=min⁡i(ai+Cbi)U=\min_i(a_i+Cb_i)U=mini​(ai​+Cbi​)
111
111
m≤Cm\le Cm≤C
H≤T≤UH\le T\le UH≤T≤U
m≤Cm\le Cm≤C
T≤UT\le UT≤U
m≤Cm\le Cm≤C
mod
bi​
)
T≡r(modD)T\equiv r\pmod DT≡r(modD)
0≤r<D0\le r<D0≤r<D
r=0,D=1r=0,D=1r=0,D=1
T=r+DxT=r+DxT=r+Dx
Dx≡ai−r(modbi)Dx\equiv a_i-r\pmod{b_i}Dx≡ai​−r(modbi​)
−
r
q=bi/gq=b_i/gq=bi​/g
(gD​)−1
(modq)
Dq
q=1q=1q=1
x=0x=0x=0
i
​
r−ai​
​
,
βi​
=
bi​D​,A=
i∑​αi​,W=
i∑​βi​.
m=(A+Wt)/Km=(A+Wt)/Km=(A+Wt)/K
W>0W>0W>0
ttt
ℓ=max⁡(0,⌈(H−r)/D⌉)\ell=\max(0,\lceil(H-r)/D\rceil)ℓ=max(0,⌈(H−r)/D⌉)
W
)
t
≤
A−
Kαi​
Kβi<WK\beta_i<WKβi​<W
i​
−
A
​
⌉
gcd
(
W
,
K
)
AAA
ggg
t≡t0(modP)t\equiv t_0\pmod Pt≡t0​(modP)
P=K/gP=K/gP=K/g
0≤t0<P0\le t_0<P0≤t0​<P
P=1P=1P=1
t0=0t_0=0t0​=0
Pℓ−t0​
​
⌉
r
+
Dt∗​
W
)
t
mmm
m>Cm>Cm>C
D′≤1036+1018D'\le10^{36}+10^{18}
D′≤1036+1018
4⋅1032+10154\cdot10^{32}+10^{15}4⋅1032+1015
DDD
TTT
128128128
WWW
log
B
+
logK)
O(N)O(N)O(N)
ai​
S=∑idiS=\sum_i d_iS=∑i​di​
T=H+qT=H+qT=H+q
(N−K)q≥Kmax⁡idi−S(N-K)q\ge K\max_i d_i-S(N−K)q≥Kmaxi​di​−S
S+Nq≡0(modK)S+Nq\equiv0\pmod KS+Nq≡0(modK)
K=NK=NK=N
qqq
000
K−1K-1K−1
O(N+K)O(N+K)O(N+K)
60
∣αi∣≤60|\alpha_i|\le60∣αi​∣≤60
N,K≤8N,K\le8N,K≤8
t∗≤967t_*\le967t∗​≤967
58 08058\,08058080
O(100 000N)O(100\,000N)O(100000N)