1 条题解
-
0
自动搬运
来自洛谷,原作者为

oVo_yangxy
⸸ "Mergi In Profundis."|The Lord.G ⸸搬运于
2025-08-24 21:17:29,当前版本为作者最后更新于2025-03-19 15:48:15,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
被拿捏了。
题目描述
直接给你两个长度为 的数组 和 构造一个数组 , 只能在 和 中选择一个赋值。赋值后,求出在 数组中相邻两数之差的绝对值之和的最小值。
思路
输入。
开一个 数组,分为两种情况,一种表示当前值选择 的两种方案的最小值,一种表示当前值选择 的两种方案的最小值。注意,在找出最小值的时候一定要加上如果为该种方案对应的前一个数,这样才能找出完全的当前值。
输出最小值。
代码
#include<bits/stdc++.h> using namespace std; long long n,a[200005],b[200005],dp[3][200005]; int main(){ cin>>n; for(int i=1;i<=n;i++) cin>>a[i]; for(int i=1;i<=n;i++) cin>>b[i]; for(int i=2;i<=n;i++){ dp[1][i]=min(abs(a[i]-a[i-1])+dp[1][i-1],abs(a[i]-b[i-1])+dp[2][i-1]); dp[2][i]=min(abs(b[i]-a[i-1])+dp[1][i-1],abs(b[i]-b[i-1])+dp[2][i-1]); } cout<<min(dp[1][n],dp[2][n]); return 0; }(给蒟蒻点个赞吧)
- 1
信息
- ID
- 11534
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 3
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者