Kho chứa lạnh
Xem PDF
Điểm:
2100
Thời gian:
0.167s
Bộ nhớ:
256M
Input:
bàn phím
Output:
màn hình
và phát hiện ra kho chứa mẫu vật. Có \(n\) kiện hàng, kiện thứ \(i\) có khối lượng \(w_i\) và giá trị \(v_i\). Con tàu có một robot vận chuyển nhưng nó có một lỗi logic: Nếu nó lấy kiện hàng \(i\) và \(j\) (\(i < j\)), thì tất cả các kiện hàng \(k\) nằm giữa (\(i < k < j\)) mà có \(w_k < \min(w_i, w_j)\) sẽ bị hỏng và không thể lấy được nữa.
Yêu cầu: Tính tổng giá trị lớn nhất và có thể thu thập được.
Input
- Dòng đầu tiên chứa số nguyên dương \(n\) (\(1 \le n \le 5 \cdot 10^5\)).
- Dòng thứ hai chứa \(n\) số nguyên \(w_1, w_2, \dots, w_n\) (\(1 \le w_i \le 10^9\)).
- Dòng thứ ba chứa \(n\) số nguyên \(v_1, v_2, \dots, v_n\) (\(1 \le v_i \le 10^9\)).
Output
- Một số nguyên duy nhất là tổng giá trị \(v_i\) lớn nhất thu thập được.
Example
Test 1
Input
6
10 5 15 2 20 8
100 50 200 30 150 70
Output
420
Note
- Nếu chọn kiện 1 (\(w=3\)) và kiện 3 (\(w=4\)), kiện 2 (\(w=1\)) nằm giữa và \(1 < \min(3, 4)\) nên kiện 2 bị hỏng. Nếu ta đã lỡ chọn kiện 2 trước đó, lựa chọn này không hợp lệ.
- Một phương án tối ưu là chọn các kiện có khối lượng không giảm dần hoặc không vi phạm quy tắc: ví dụ chọn kiện 1, 3, 5 (tổng giá trị \(10+30+50=90\)).
- Lưu ý: Bản chất bài toán là chọn ra một dãy con sao cho không có phần tử nào ở giữa thấp hơn cả hai đầu đã chọn.
Scoring
- Subtask 1 (20% số điểm): \(n \le 20\).
- Subtask 2 (30% số điểm): \(n \le 2000\).
- Subtask 3 (50% số điểm): \(n \le 5 \cdot 10^5\).
Bình luận