Hướng dẫn cho DANCE


Chỉ sử dụng khi thực sự cần thiết như một cách tôn trọng tác giả và người viết hướng dẫn này.

Chép code từ bài hướng dẫn để nộp bài là hành vi có thể dẫn đến khóa tài khoản.

Subtask 1:

  • de quy để sinh ra tất cả các tổ hợp của \(k * 2\) người trong tất cả \(n\) người.
  • DPT tối đa: \(n!\)

Subtask 2:

  • Sắp xếp chiều cao của tất cả học viên lại, vì cách tối sẽ là bắt cặp với độ chênh lệch của mỗi cặp là nhỏ nhất có thể.
  • Với trường hợp: \(n\) chẵn (ko dư người). Thì ta ghép tất cả các cặp theo thứ tự từ bé đến lớn.
  • Với trường hợp: \(n\) lẻ ( bị thừa 1 người ko được bắt cặp): Thì ta phải chọn người cần bỏ ra để được kết quả tối ưu nhất (tốn 1 vòng để lựa chọn) và cài bằng cách sử \(prev[]\) và \(post[]\);
  • Với mỗi \(i\) là người bị loại ra thì \(prev[i-1]\) + \(post[i + 1]\) compare to result.
  • DPT: \(O(n)\) + \(O(nlogn)\) của sort

Subtask 3: QHD

  • \(dp[i][j]\) , trong đó:
  • \(i\) là \(i\) người đã duyệt qua
  • \(j\) là số cặp đã được chọn trong \(i\) người đã duyệt qua
  • \(dp[i][j]\) lưu độ chênh lệch thấp nhất của \(j\) cặp trong \(i\) người đã duyệt.
  • DPT: \(n^2\)
  • \(dp[i][j] = min(dp[i-2][j-1] + h[i] - h[i-1], dp[i-1][j])\) (notice: cẩn thận \(j-1 < 0\))

Bình luận

Không có bình luận nào.