[普及-]93766题解
2025-12-08 22:58:53
发布于:广东
15阅读
0回复
0点赞
吐槽
怎么管的这么怂,3个人代码里(除了我)2个AI,1个复制别人的AI代码。
题目大意
给你n块石头,每次跳跃跳下一个或者空一格,跳一次的代价是 其中 分别指起点位置和重点位置。要求你求出跳到第 块石头的最小代价。
思路
本题考虑dp。
设 为跳到第 块石头的最小值。同时我们发现,想到达第 石头,必须从 或 到达。因此 的值也一定只由 决定。很快我们就能发现转移方程:
最后输出 即可。
#include<bits/stdc++.h>
using namespace std;
const int N = 100005;
#define int long long
int dp[N] , a[N] , n;
signed main(){
cin >> n;
for(int i = 1;i <= n;i ++){
cin >> a[i];
dp[i] = 0x3f3f3f3f;
}
dp[1] = 0;
dp[2] = abs(a[1] - a[2]);
for(int i = 3;i <= n;i ++){
dp[i] = min(dp[i - 2] + abs(a[i - 2] - a[i]) , dp[i - 1] + abs(a[i - 1] - a[i]));
}
cout << dp[n];
return 0;
}
当然可以使用滚动数组(不给代码自己写)。
全部评论 1
那确实,还不止两个,而且似乎里面有社区赛事作弊榜上的人,橙题都要用AI还不认真学,思路都不理解一下直接ctrl起手打什么竞赛学什么c++啊
1周前 来自 广东
0zczc,acgo一直都不管这事,我记得三年前就这样了,现在还没改
1周前 来自 广东
0






有帮助,赞一个