DP专题训练9

1|0蜗牛

在这里插入图片描述

在每个点有两个状态,一个是在y=0处,一个是在上一个杆传过来的传送门处

注意最后到达的点一定是在y=0处

#include<bits/stdc++.h> using namespace std; #define int long long #define endl "\n" #define inf 1e18 const int mod = 998244353; const int N = 1e5 + 10; int x[N], a[N], b[N]; double dp[N][2]; //dp[i][0]表示到(x_i,0)的最短距离 //dp[i][1]表示到(x_i,b_i)的最短距离 int n; void solve(){ cin >> n; for(int i = 1; i <= n ; i ++) cin >> x[i]; for(int i = 1 ; i <= n-1 ; i ++) cin >> a[i] >> b[i]; dp[1][0] = x[1]; dp[1][1] = x[1] + (a[1]*1.0/0.7); for(int i = 2 ; i <= n ; i ++){ dp[i][0] = min(dp[i-1][0]+x[i]-x[i-1],dp[i-1][1]+(b[i-1]*1.0)/1.3); dp[i][1] = dp[i][0] + (a[i]*1.0/0.7); if(a[i] >= b[i-1]){ dp[i][1] = min(dp[i][1],dp[i-1][1]+(a[i]-b[i-1])*1.0/0.7); }else{ dp[i][1] = min(dp[i][1],dp[i-1][1]+(b[i-1]-a[i])*1.0/1.3); } } printf("%.2lf",dp[n][0]);//最后始终是走到dp[n][0]的 最终dp[n][1] 是和dp[n][0]是一样的 } signed main(){ //ios::sync_with_stdio(false),cin.tie(0),cout.tie(0); int _ = 1; //cin >> _; while(_--) solve(); return 0; }

__EOF__

本文作者xued
本文链接https://www.cnblogs.com/xdeyt/p/18140574.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   xde_yt  阅读(6)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
点击右上角即可分享
微信分享提示