P11290 【MX-S6-T2】「KDOI-11」飞船

题目大意:有i种加油站,最开始速度为1,每次加油可以使速度*v,每次加油有一个时间代价,求到达终点所需最小时间。

思路:不妨考虑dp,贪心是错误的。

对于速度而言,y<=10^9,所以速度一定<10^9,所以速度是指数增长的,状态数不会很多。

于是只有两种状态2^j*3^k,设f[i][j][k]表示前i个加油站加到速度为2^j*3^k

有两种转移策略:

1.f[i][j][k]=min(f[i-1][j][k]+(a[i].x-a[i-1].x)/1.0/(fac1[j]*fac2[k]),f[i][j][k]);

表示继承前一个点的值

2.f[i][j][k]=min(f[i-1][j-1][k]+a[i].t*1.0+(a[i].x-a[i-1].x)/1.0/(fac1[j-1]*fac2[k]),f[i][j][k]);

当且仅当vi=2

3.f[i][j][k]=min(f[i-1][j][k-1]+a[i].t*1.0+(a[i].x-a[i-1].x)/1.0/(fac1[j]*fac2[k-1]),f[i][j][k]);

当且仅当vi=3

4.vi=4同理

考虑计算答案,对于每一个终点而言,离它最近且不在它的位置上是最优的。因为这个点记录了前i个点的最优值

枚举每种状态即可,复杂度O(n*log_{2}^2(\alpha ))级别

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值