【比赛】【SMOJ 2019.1.24】

三道题两道套路题可还行。


\(\mathrm{T1}\)

类欧太难,数位\(\mathrm{DP}\)又太难推。自闭。

类欧做法


\(\mathrm{T2}\)

卡常卡不过去(明明就是\(\Theta(n^2\log n)\)的时间复杂度啊为什么过不去啊啊啊……)


\(\mathrm{T3}\)

可做题终于出现了。
然而思路越简单的题目貌似坑也越多。

考虑线段树上维护两个标记,分别表示指数的标记和系数的标记。
指数标记的优先级比系数标记的高。

然后在下推标记时先推指数标记再推系数标记即可。

坑点一:区间乘

为区间中的每一个数都乘上一个数\(x\)是要乘\(x^{\texttt{区间长度}}\)的,而不是只乘\(x\)

坑点二:线段树的节点

每个节点表示的究竟是什么?这个问题值得认真去思考。
毕竟我们维护的不是一个个点,是一条条线段啊。

反正最后用的就是最简单的方法:以线段的端点作为节点再离散化,这样每次操作都相当于修改若干个连续区间,然后区间长度应该是\(r(index)-l(index)\)(不需要\(+1\),因为单位线段的个数要比端点数少\(1\))。

坑点三:如何对指数标记取模?

还好我考场上没来由地想起了逆元这个神奇东西。

我们回顾一下求逆元所需要依靠的费马小定理

\[a^p \equiv a \pmod p \]

\(a\)不是\(p\)的倍数时,上面的式子有一个更常见的变式:

\[a^{p-1} \equiv 1 \pmod p \]

然后\(a^0=1\)

所以$$a^{p-1} \equiv a^0 \pmod p$$

\(so?\),指数就相当于关于\(p\)取模了嘛。

所以我们在对指数标记取模时把模数设成\(m-1\)即可。

坑点四:\(0^0=?\)

在初中,\(0^0\)无意义,但在以后我们可以用极限的知识证明:\(0^0=1\)

\(\mathrm{Code}\)

posted @ 2019-08-01 11:15  info___tion  阅读(102)  评论(0编辑  收藏  举报