Tài liệu bồi dưỡng học sinh giỏi THPT – Môn Tin học Phần II: Chuyên đề nâng cao CHUYÊN ĐỀ NÂNG CAO CHUYÊN ĐỀ 6: QUY HOẠCH ĐỘNG A DÃY CON ĐƠN ĐIỆU DÀI NHẤT Mô hình Cho dãy a1,a2, an Hãy tìm dãy tăng có nhiều phần tử dãy Công thức QHĐ Ta nhận thấy số lượng phần tử dãy a tăng độ dài dãy tăng có khả tăng theo Độ dài L dãy tăng biến thiên theo đại lượng ta dùng bảng phương án mảng chiều Gọi L(i) độ dài dãy tăng dài đoạn phần tử từ a1 đến Nhận xét với cách làm ta chia toán lớn (dãy n số) thành toán kiểu có kích thước nhỏ (dãy dãy i số) Vấn đề công thức truy hồi để phối hợp kết toán Ta có công thức QHĐ để tính L(i) sau: L(1) = (Hiển nhiên) L(i) = + Max(L[j]) với j=1 i-1 aj ... dãy Dãy con đổi dấu ai1, ai2 , … aik phải thoả mãn điều kiện sau: • ai1ai3ai2… • số phải cách L: i2-i1≥L, i3-i2≥L… • chênh lệch phần tử liên tiếp nhỏ U: |ai1-ai2|≤U, |ai2-ai3|≤U…... phần tử đứng trước Ta dễ dàng suy ra: • • • • • • L(i) = max(1, P(j)+1): j≤i-L ai-U≤aj