Hướng dẫn cho TLEoj Contest #05 - Hoán đổi K


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.

Authors: i_loveMaiPhuong

Vì n\le 18 nên ta có thể tạo mảng val để lưu giá trị các đỉnh với mọi đỉnh 1\le i\le 2^n-1. Với mỗi lần đổi 2 đỉnh l,r ta chỉ cần đổi giá trị val[l] và val[r] cho nhau.

Về việc tính giá trị f(i)+g(i), ta có thể sử dụng khá nhiều thuật toán khác nhau, sau đây là 1 ví dụ (ở đây ta chỉ xét hàm f(i) vì hàm g(i) tương tự):

  • Ta gọi kết quả là ans, ban đầu ans bằng val[i]
  • Đặt i=[\frac{1}2], sau đó cập nhật ans=min(ans,val[i]). Lặp lại đến khi i=1.


Bình luận

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