Có n phần tử theo thứ tự từ trái sang phải. Phần tử i có chiều cao hi và trọng số bi.
Bạn được chọn một dãy con, tức một số vị trí có chỉ số tăng dần. Dãy được chọn hợp lệ khi chiều cao cũng tăng nghiêm ngặt. Giá trị của dãy là tổng trọng số tại các vị trí đã chọn.
Hãy tìm giá trị lớn nhất có thể đạt được.
Input
Dòng đầu chứa số nguyên n.
Dòng thứ hai chứa n số h1,h2,…,hn.
Dòng thứ ba chứa n số b1,b2,…,bn.
Output
In tổng trọng số lớn nhất của một dãy con hợp lệ.
Constraints
1≤n≤2⋅105.
h là một hoán vị của các số 1,2,…,n.
1≤bi≤109.
Kết quả nằm trong miền của số nguyên có dấu 64-bit.
Scoring
Subtask 1 (50% số điểm): n≤3000.
Subtask 2 (50% số điểm): Không có giới hạn bổ sung.
Example
Test 1
Input
6
4 2 6 1 5 3
7 4 8 5 6 10
Output
15
Giải thích: Có thể chọn các vị trí 1,3 với chiều cao 4<6, tổng trọng số 7+8=15. Một lựa chọn khác là vị trí 4,6 với chiều cao 1<3, cũng đạt 15, và không dãy hợp lệ nào có tổng lớn hơn.
Lời giải tóm tắt
Phân tích: Gọi dp[i] là tổng trọng số lớn nhất của một dãy con hợp lệ kết thúc tại vị trí i. Trước i, ta chỉ được nối từ vị trí j<i có h_j<h_i, nên
Phân tích:dp[i] = b_i + max(dp[j]) với j<i và h_j<h_i.
Phân tích: Khi quét theo chỉ số tăng dần, điều kiện j<i tự động được bảo đảm. Ta cần cấu trúc lấy cực đại theo tiền tố chiều cao; Fenwick Tree có thể thay phép cộng bằng phép max.
Thuật toán: Khởi tạo Fenwick Max kích thước n, mọi giá trị bằng 0.
Thuật toán: Duyệt i từ 1 đến n:
Thuật toán: tính best = query(h_i-1);
Thuật toán: đặt dp[i]=best+b_i;
Thuật toán: cập nhật vị trí h_i bằng max(giá trị cũ, dp[i]).
Thuật toán: Đáp án là giá trị lớn nhất trong các dp[i].
Chứng minh: Khi xử lý i, Fenwick tại tiền tố x lưu giá trị dp lớn nhất của mọi vị trí đã xử lý có chiều cao không vượt quá x. Điều này đúng lúc đầu và được duy trì vì mỗi dp[i] được cập nhật đúng tại chiều cao h_i bằng phép lấy cực đại.
Chứng minh: Do đó query(h_i-1) xét đúng tất cả và chỉ các dãy con kết thúc trước i với chiều cao cuối nhỏ hơn h_i. Nối phần tử i vào lựa chọn tốt nhất trong số đó tạo dp[i] tối ưu; trường hợp không chọn phần tử trước nào được biểu diễn bởi giá trị 0. Mọi dãy hợp lệ có một vị trí kết thúc, nên cực đại của các dp[i] là đáp án toàn cục.
Độ phức tạp: Mỗi vị trí dùng một truy vấn và một cập nhật Fenwick, mất O(log n). Tổng thời gian là O(n log n), bộ nhớ là O(n).