lanqiao OJ 蜗牛

简介: lanqiao OJ 蜗牛

用户登录

dp ;

我们设状态表示,f[N][2] 表示到第i个杆的底部和传送门位置所需要的最短路程;

对于f[i][0] 有两种可以转换的方程

一种是由f[i-1][0]走过来,f[i][0] = f[i-1][0] +d(两杆之间的直接距离)

二种是由f[i-1][1]走过来,f[i][0] = f[i-1][1] + b[i] /1.3

对于f[i][1] 有两种可以转换的方程

一种是由f[i-1][0] 走过来,f[i][1] = f[i-1][0]+d+a[i]/0.7

二种是由f[i-1][1] 走过俩,f[i][1] = f[i-1][1] + (b - a) / 速度

#include<iostream>
#include<cstring>
#include<algorithm>
 
using namespace std  ;
const int N =  1e5+10;
double f[N][2] ;
double x[N] ,a[N],b[N] ;
int n ;
int main(){
  cin >> n ;
  for(int i = 1 ; i<= n ; i++) cin >> x[i] ;
  for(int i = 1 ; i < n ; i++) cin >> a[i] >> b[i] ;
  memset(f,127,sizeof(f)) ; 
  f[1][0] = x[1] ; f[1][1] = f[1][0] + a[1] / 0.7;
  for(int i = 2; i <= n ;i ++){
    f[i][0] = min(f[i-1][0]+x[i]-x[i-1] ,f[i-1][1] + b[i-1] / 1.3 ) ;
    f[i][1] = min(f[i][0] + a[i]/0.7 , f[i-1][1] + abs(b[i-1]- a[i]) / (b[i-1] >= a[i] ? 1.3:0.7 ));
  }
  printf("%.2f\n",f[n][0]) ;
}

目录
相关文章
|
2月前
lanqiao OJ 1388 寒假作业
lanqiao OJ 1388 寒假作业
34 0
|
2月前
lanqiao OJ 364 跳石头
lanqiao OJ 364 跳石头
36 6
|
2月前
lanqiao OJ 525 传球游戏
lanqiao OJ 525 传球游戏
29 2
|
2月前
lanqiao OJ 389 摆花
lanqiao OJ 389 摆花
19 2
|
2月前
lanqiao OJ 89 路径之谜
lanqiao OJ 89 路径之谜
26 1
|
2月前
lanqiao OJ 99 分巧克力
lanqiao OJ 99 分巧克力
14 1
|
2月前
lanqiao oj 17136 星球(状态压缩dp)
lanqiao oj 17136 星球(状态压缩dp)
13 0
|
2月前
lanqiao oj 1121 蓝桥公园(floyd)
lanqiao oj 1121 蓝桥公园(floyd)
44 0
|
2月前
lanqiao OJ 102 青蛙跳杯子
lanqiao OJ 102 青蛙跳杯子
28 0
|
2月前
lanqiao OJ 98 包子凑数
lanqiao OJ 98 包子凑数
11 0