CF 553E Kyoya and Train
题目分析
期望\(\text{dp}\)。
设\(f_{i,j}\)表示在第\(j\)个时刻从\(i\)点出发,到达终点的期望花费。
有转移方程:
\[
f_{x,t}=\min_{(x,y)\in E}(c_{x,y}+\sum_{i=1}^Tp_{y,i}\cdot f_{y,i+t})
\]
如果直接转移,时间复杂度是\(O(n \cdot T^2)\)。
考虑如何优化。
冷静分析发现,\(\sum\limits_{i=1}^Tp_{y,i}\cdot f_{y,i+t}\)可以化成卷积形式。
设\(g_{y,t}=\sum\limits_{i=1}^Tp_{y,i}\cdot f_{y,i+t}\)。
如果我们已知\(f_{y,i}(i\ge t)\),那么我们可以\(O(m\cdot T\cdot \log T)\)算出\(f_{y,i}(i\ge t)\)对\(g_{y,t}\)的贡献。
如果我们倒着枚举时间\(t\),边dp边算贡献,每个时间\(t\)会计算贡献\(O(T)\)次,时间复杂度是\(O(m\cdot T^2\cdot \log T)\)。
考虑分治\(\text{fft}\)。
每次分治区间\([l,r]\),处理完右区间后,统计右区间对左区间的贡献,再处理左区间。
时间复杂度\(O(m\cdot T\cdot \log T)\),可以接受。
有点卡常,需要手写\(\text{complex}\)。
CF 553E Kyoya and Train的更多相关文章
- [Codeforces 553E]Kyoya and Train(期望DP+Floyd+分治FFT)
[Codeforces 553E]Kyoya and Train(期望DP+Floyd+分治FFT) 题面 给出一个\(n\)个点\(m\)条边的有向图(可能有环),走每条边需要支付一个价格\(c_i ...
- CodeForces 553E Kyoya and Train 动态规划 多项式 FFT 分治
原文链接http://www.cnblogs.com/zhouzhendong/p/8847145.html 题目传送门 - CodeForces 553E 题意 一个有$n$个节点$m$条边的有向图 ...
- ●codeforces 553E Kyoya and Train
题链: http://codeforces.com/problemset/problem/623/E 题解: FFT,DP 题意: 一个有向图,给出每条边的起点u,终点v,费用c,以及花费每种时间的概 ...
- Codeforces 553E Kyoya and Train
题目大意 链接:CF533E 给一张\(n\)个点,\(m\)条边的图,起点\(1\)终点\(n\),如果不能在\(T\)的时间内到达则需支付\(X\)的代价. 走每条边都会支付一定代价,经过一条边\ ...
- 【CF553E】Kyoya and Train 最短路+cdq分治+FFT
[CF553E]Kyoya and Train 题意:有一张$n$个点到$m$条边的有向图,经过第i条边要花$c_i$元钱,经过第i条边有$p_{i,k}$的概率要耗时k分钟.你想从1走到n,但是如果 ...
- CF553E Kyoya and Train
Kyoya and Train 一个有\(n\)个节点\(m\)条边的有向图,每条边连接了\(a_i\)和\(b_i\),花费为\(c_i\). 每次经过某一条边就要花费该边的\(c_i\). 第\( ...
- 【codeforces 553E】 Kyoya and Train
http://codeforces.com/problemset/problem/553/E (题目链接) 艹尼玛,CF还卡劳资常数w(゚Д゚)w!!系统complex被卡TLE了T_T,劳资写了一天 ...
- 再探快速傅里叶变换(FFT)学习笔记(其三)(循环卷积的Bluestein算法+分治FFT+FFT的优化+任意模数NTT)
再探快速傅里叶变换(FFT)学习笔记(其三)(循环卷积的Bluestein算法+分治FFT+FFT的优化+任意模数NTT) 目录 再探快速傅里叶变换(FFT)学习笔记(其三)(循环卷积的Blueste ...
- 多项式 之 快速傅里叶变换(FFT)/数论变换(NTT)/常用套路【入门】
原文链接https://www.cnblogs.com/zhouzhendong/p/Fast-Fourier-Transform.html 多项式 之 快速傅里叶变换(FFT)/数论变换(NTT)/ ...
随机推荐
- c#和java中封装字段的不同
c#: private String name; public String Name { get { return name; } set { name = value; } } .csharpco ...
- Spring中使用JMS
JMS为了Java开发人员与消息代理(message broker)交互和收发消息提供了一套标准API.而且,由于每个message broker都支持JMS,所以我们就不需要学习额外的消息API了. ...
- AutoResetEvent和ManualResetEvent理解
AutoResetEvent和ManualResetEvent用于多线程之间代码执行顺序的控制,它们继承自WaitHandle,API相同,但在使用中还是有区别的. 每次使用时虽然理解了,但由于没有去 ...
- guava快速入门(二)
Guava工程包含了若干被Google的 Java项目广泛依赖 的核心库,例如:集合 [collections] .缓存 [caching] .原生类型支持 [primitives support] ...
- JS判断两个数是否能除尽
function judgeDivisor(m, n) { var num = {}; var i = 0; var x = parseInt(m / n); m = m % n; var resul ...
- csharp:search and Compare string
/// <summary> /// 涂聚文 /// 2011 捷为工作室 /// 缔友计算机信息技术有限公司 /// </summary> /// <param name ...
- 精选10款HTML5手机模板
1.Stroller | Mobile & Tablet Responsive Template 演示地址 购买地址 2.Ocean Mobile Template 演示地址 购买地址 ...
- 使用react——解决this.props.history.push无法跳转的问题
转自: https://blog.csdn.net/yingzizizizizizzz/article/details/78751305 场景: 一个组件中,含有ul展开数组的组件,在每一行中,都能点 ...
- input file样式美化
默认样式: <input type="file" /> 美化样式时: 将其设置为透明,设置宽高覆盖到需要用的地方,宽100%,高100% 可以用到定位 .box{ po ...
- chrome:插件、跨域、调试....
chrome 调试小技巧 ctrl+shift+c 打开chrome的控制台选中一个元素,然后在控制台输入$0即可获取选中的元素,就可以对其进行操作了. $0.addEventListener(... ...