题解 P4774「NOI 2018」屠龙勇士
Description
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
本文来自博客园,作者:Gauss0919,转载请注明原文链接:https://www.cnblogs.com/Gauss0320/p/15032257.html