2 条题解

  • 0
    @ 2025-10-8 16:55:40
    #include <bits/stdc++.h>
    using namespace std;
    const int MAXN = 100000 + 10;
    int n, k, h[MAXN], dp[MAXN];
    int main()
    {
        cin >> n >> k;
        for(int i = 1; i <= n; i ++)
            cin >> h[i];
        memset(dp, 0x3f, sizeof dp);
        dp[1] = 0;
        for(int i = 2; i <= n; i ++)
            for(int j = max(1, i - k); j < i; j ++)
                dp[i] = min(dp[i], dp[j] + abs(h[i] - h[j]));
        cout << dp[n];
        return 0;
    }
    
    • 0
      @ 2025-10-8 16:55:35
      #include <bits/stdc++.h>
      using namespace std;
      const int MAXN = 100000 + 10;
      int n, k, h[MAXN], dp[MAXN];
      int main()
      {
      	cin >> n >> k;
      	for(int i = 1; i <= n; i ++)
      		cin >> h[i];
      	memset(dp, 0x3f, sizeof dp);
      	dp[1] = 0;
      	for(int i = 2; i <= n; i ++)
      		for(int j = max(1, i - k); j < i; j ++)
      			dp[i] = min(dp[i], dp[j] + abs(h[i] - h[j]));
      	cout << dp[n];
      	return 0;
      }
      • 1

      信息

      ID
      1132
      时间
      2000ms
      内存
      1024MiB
      难度
      4
      标签
      递交数
      126
      已通过
      54
      上传者