Description

见 ​​NOI 2018 屠龙勇士​​。

Analysis

Part I

首先我们注意到,对于每一条龙,击杀它所使用的剑是确定的。

根据题意,我们可以用权值线段树/平衡树/multiset 预处理出击杀第 \(i\) 条龙所用的剑的攻击力,记为 \(C_i\),\(i=1,2\cdots,n\)。

Part II

对于 \(p_i=1\) 的这档部分分,显然只要龙的生命值非负就会死亡,故答案为 \(\displaystyle\left\lceil\frac{A_i}{C_i}\right\rceil\) 的最大者。

Part III

观察数据范围我们可以发现,除去 \(p_i=1\) 的测试点外,其余测试点满足 \(a_i\le p_i\)。

于是题意可转化为求方程组


\[\begin{cases}C_1x\equiv A_1\pmod{P_1}\\ C_2x\equiv A_2\pmod{P_2}\\ \cdots\cdots\cdots\cdots\cdots\cdots\\ C_nx\equiv A_n\pmod{P_n} \end{cases} \]


的最小正整数解。

为了解决这个问题,我们首先将其转化为 exCRT 板子的标准形式


\[\begin{cases}x\equiv a_1\pmod{b_1}\\ x\equiv a_2\pmod{b_2}\\ \cdots\cdots\cdots\cdots\cdots\\ x\equiv a_n\pmod{b_n} \end{cases} \]


如何转化呢?

考虑方程 \(Cx\equiv A\pmod{P}\),可知存在整数 \(y\) 使得 \(Cx+Py=A\),用 exgcd 求解出它的一组特解 \(x=x_0,y=y_0\)。于是有 \(x\equiv x_0\pmod{P/\gcd(C,P)}\),从而我们完成了上述转化。

exCRT 的部分直接 copy 模板即可,这道题好像就是板子题吧(

Code

​代码​