Kho chứa lạnh

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 2100 Thời gian: 0.167s Bộ nhớ: 256M Input: bàn phím Output: màn hình

uouPrototype 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\)\(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 Prototypeuou 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

Mới nhất
Tải bình luận...

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