为了表述方便,以下所述$p_{i,k}$均为原题中的$\frac{p_{i,k}}{100000}$
给定一个$n$个点$m$条边有向图,第$i$条边有边权$c_i$,可能的花费时间为$[1,t]$,且花费$k$时间的概率是$p_{i,k}$。
一个人从$1$到$n$,如果到达时间超过$T$,则需要额外缴纳$X$的花费,求期望最小花费。
$\texttt{Data Range:}2\leq n\leq 50,1\leq m\leq 100,1\leq t\leq 2\times 10^4,0\leq x,c_i\leq 10^6$
链接
题解
在你谷 AC 的第$1111$道题目,并且在凌晨之前做完了,写篇题解纪念一下呢qwq。
神仙们都是从上往下做的,只有我一个菜鸡从下往上,而且$\texttt{CF1184A3}$还被题意杀了。
第一次做$\texttt{3300}$的题目呢,而且还是$\texttt{myy}$的论文题,还是比较难的。
还是祝我能上$\texttt{Expert}$吧qwq
一道分治$\texttt{FFT}$好题。(但是这还是无法掩盖自己第一次写分治$\texttt{FFT}$的现实)
众所周知我们可以先$\texttt{dp}$,设$dp_{i,j}$表示到达$i$的时间为$j$的最小花费,$P_{e,t}$为走边$e$花费时间$t$的概率。对于某一个点$x$,枚举它的出边$e_i=(x,y_i)$,于是我们可以写出转移为
为什么这个转移成立呢?我们考虑把图看成一个以时间为层数的分层图,题目保证了一个点再也不能回到它的祖先(除非经过时间为负数),所以这张分成图是个$\texttt{DAG}$,就可以做了。
然后你会发现状态$O(mT)$,转移$O(T)$,嘿嘿,结果可想而知。
我们来设一个$g_{e,t}=c_e+\sum_{j=1}^{T}P_{e,j}dp_{y_e,t+j}$,再来设一个$f_{e,T+t}=g_{e,T}$,于是我们有
考虑翻转$P$,假设得到$Q$,则
噫,成了!出现卷积形式,但是这样过不了,因为右边与时间有关,怎么办呢?
于是我们可以对时间分治。
这里给一个恒等式
说白了,就是拆开,然后我们就可以高高兴兴上分治$\texttt{FFT}$了。
代码
1 |
|