SPOJ - KAGAIN
★ Link: https://codeforces.com/group/FLVn1Sc504/contest/274496/problem/M
★ Difficulty: ezpz
★ Tags: deque
★ Kiến thức: https://vnoi.info/wiki/algo/data-structures/deque-min-max.md
★ Tóm tắt:
Cho dãy số a[] với n phần tử. Ta cần tìm giá trị k = a[i] * (ri - li + 1) là lớn nhất với a[i] = min(a[li], a[li+1],.., a[ri]). Nói cách khác a[i] là phần tử nhỏ nhất trong đoạn a[li...ri].
★ Ý tưởng: sử dụng deque cơ bản.
Gọi L[i] là vị trí xa nhất về bên trái đối với phần từ a[i] thoả điều kiện a[L[i]...i-1] đều lớn hơn hoặc bằng a[i].
Gọi R[i] là vị trí xa nhất về bên phải đối với phần tử a[i] thoả điều kiện a[i+1...R[i]] đều lớn hơn hoặc bằng a[i].
Để tìm các vị trí L[i] và R[i] như trên ta sẽ dùng deque. Các bạn xem code và đọc tài liệu bên trên sẽ rõ.
★ Code: https://ideone.com/bsCxZe
Comments
Post a Comment