.c om th an co ng THUẬT TOÁN ỨNG DỤNG cu u du o ng CẤU TRÚC DEQUE Phạm Quang Dũng Bộ môn KHMT dungpq@soict.hust.edu.vn CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om DEQUE Cấu trúc liệu tuyến tính có tính chất ngăn ng xếp hàng đợi: co Thêm phần tử vào cuối deque an Lấy phần tử đầu deque th Lấy phần tử cuối deque ng Trong C++ du o Khai báo: deque u Phương thức: push_back(), push_front(), pop_front(), cu pop_back(), back(), front(), empty() CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om Quy hoạch động sử dụng deque Cho dãy a1, a2, …, an số nguyên dương L1 < L2 cu u du o ng th an co ng Hãy tìm dãy ≤ j1 < j2 < … < jk ≤ n cho L1 ≤ jq+1 – jq ≤ i2 , , …, có tổng cực đại CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om Quy hoạch động sử dụng deque Định nghĩa toán ng S(i): tổng cực đại dãy dãy a1, …, thỏa mãn co đề mà phần tử cuối an Công thức quy hoạch động cu u du o ng th S(i) = max(ai + S(j) | L1 ≤ i – j ≤ L2} CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om Quy hoạch động sử dụng deque Định nghĩa tốn Cơng thức quy hoạch động co mà phần tử cuối ng S(i): tổng cực đại dãy dãy a1, …, thỏa mãn đề an S(i) = max(ai + S(j) | L1 ≤ i – j ≤ L2} th Khởi tạo deque, lưu trữ số j cho S(j) không tăng du o ng ứng cử viên để tính tốn toán S(i) Mỗi xét đến số i (i = 1,…, n) Đưa hết số j đầu deque j < i – L2 ngồi (vì cu u ko ứng cử viên để xác định S(i), S(i+1),…) Đưa hết số j cuối deque S(j) < S(i-L1) (do số j khơng có ý nghĩa việc xác định S(i), S(i+1),… CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om Quy hoạch động sử dụng deque for(int i = 1; i = 1){ co int n,L1,L2,ans; an int main(){ cin.tie(0); q.pop_back(); q.push_back(i-L1); ng cin >> n >> L1 >> L2; } S[i] = a[i] + (q.empty() ? : S[q.front()]); u cu ans = 0; du o for(int i = 1; i > a[i]; while(!q.empty() && S[q.back()] < S[i- L1]) th ios_base::sync_with_stdio(0); deque q; i - L2)) ng const int N = 1e6+1; ans = max(ans,S[i]); } cout ... du o ng ứng cử viên để tính tốn toán S(i) Mỗi xét đến số i (i = 1,…, n) Đưa hết số j đầu deque j < i – L2 ngồi (vì cu u ko ứng cử viên để xác định S(i), S(i+1),…) Đưa hết số j cuối deque. .. sử dụng deque Định nghĩa tốn Cơng thức quy hoạch động co mà phần tử cuối ng S(i): tổng cực đại dãy dãy a1, …, thỏa mãn đề an S(i) = max(ai + S(j) | L1 ≤ i – j ≤ L2} th Khởi tạo deque,