• LQDOJ
  • Trang chủ
  • Bài tập
  • Bài nộp
  • Thành viên
  • Kỳ thi
  • Nhóm
  • Giới thiệu
    • Máy chấm
    • Khóa học
    • Đề xuất ý tưởng
    • Đề xuất bài tập
    • Tools
    • Báo cáo tiêu cực
    • Báo cáo lỗi

Tiếng Việt

Tiếng Việt
English

Đăng nhập

Đăng ký

hkhs2401

  • Giới thiệu
  • Bài tập
  • Bài nộp

Rating
-
Bài tập
4
Điểm
624
Rating #
-
Điểm #
22108

Giới thiệu

include <iostream>

include <vector>

include <climits>

using namespace std;

int main() {
int n, k;
cin >> n >> k;
vector<int> h(n);
for (int i = 0; i < n; i++) {
cin >> h[i];
}

// dp[i][j] - l?ng phí t?i thi?u khi đ? đi qua chư?ng ng?i v?t th? i v?i j l?n thay đ?i đ? cao
vector<vector<long long> > dp(n, vector<long long>(k + 1, LLONG_MAX));

// Kh?i t?o chi?u cao ban đ?u
for (int j = 0; j <= k; j++) {
    dp[0][j] = 0; // Không có l?ng phí khi chưa thay đ?i g? ? chư?ng ng?i v?t đ?u tiên
}

// Duy?t qua các chư?ng ng?i v?t t? 1 đ?n n
for (int i = 1; i < n; i++) {
    for (int j = 0; j <= k; j++) {
        for (int prev = 0; prev <= j; prev++) {
            dp[i][j] = min(dp[i][j], dp[i-1][prev] + max(0, h[i] - h[i-1]));
        }
    }
}

long long result = LLONG_MAX;
for (int j = 0; j <= k; j++) {
    result = min(result, dp[n-1][j]);
}

cout << result << endl;
return 0;

}


«    »
Thứ 2
Thứ 3
Thứ 4
Thứ 5
Thứ 6
Thứ 7
CN
Ít
Nhiều

proudly powered by DMOJ| developed by LQDJudge team