Gửi bài giải
Điểm:
1,00 (OI)
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
1G
Input:
stdin
Output:
stdout
Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Kotlin, Pascal, PyPy, Python, Scratch
Tèo đang trong một cửa hàng, và Tèo có một ba lô có sức chứa tối đa là ~M~, Tèo bắt đầu đi shooping ...
Có ~N~ món đồ được đánh số từ ~1~ đến ~N~. Món đồ thứ ~i~ có trọng lượng là ~w_i~ và giá trị là ~v_i~.
Được biết sẽ có vài món đồ phụ thuộc vào nhau. Nếu ~d_i = j(i>j)~ tức nếu muốn mua món đồ thứ ~i~ thì phải mua món đồ thứ ~j~ trước, nếu ~j = 0~ thì món đồ này có thể mua bất kì lúc nào không phụ thuộc bởi các món đồ khác. Đảm bao mỗi món đồ chỉ phụ thuộc tối đa ~1~ món đồ khác, và các mối phụ thuộc này hợp lý, không xảy ra vòng lặp.
Vì Tèo không giỏi trong việc tính toán nên bạn hãy giúp Tèo tính toán chọn mua các đồ sao cho không quá sức chứa của ba lô mà mang lại giá trị lớn nhất.
Input
- Dòng đầu gồm ~2~ số nguyên ~N, M~ ~(1 \le N,M \le 6*10^4)~
- Dòng thứ hai hồm ~n~ số nguyên ~d_1, d_2, ... d_n(0 \le d_i < n)~.
- Dòng thứ ba hồm ~n~ số nguyên ~w_1, w_2, ... w_n(1 \le w_i \le 200)~.
- Dòng thứ tư hồm ~n~ số nguyên ~v_1, v_2, ... v_n(0 \le v_i \le 5000)~.
Output
- Gồm ~1~ dòng duy nhất là kết quả của bài toán, giá trị lớn nhất thu được.
Sample Input
5 3
0 0 1 2 0
1 1 1 1 1
2 2 1 2 3
Sample Output
7
Subtask
- ~1 \le N*M \le 6*10^7~
- Có ~22\%~ số test thỏa mãn: ~1 \le N \le 100, 1 \le M \le 12~.
- Có ~6\%~ số test thỏa mãn: ~1 \le N \le 200, 1 \le M \le 250, v_i = 1~.
- Có ~6\%~ số test thỏa mãn: ~1 \le N \le 200, 1 \le M \le 250, w_i = 1~.
- Có ~6\%~ số test thỏa mãn: ~1 \le N \le 200, 1 \le M \le 250~.
- Có ~20\%~ số test thỏa mãn: ~1 \le N \le 400, 1 \le M \le 500~.
- Có ~20\%~ số test thỏa mãn: ~1 \le N \le 7500, 1 \le M \le 8000~.
- Có ~10\%~ số test thỏa mãn: ~1 \le N \le 50000, 1 \le M \le 1200~.
- Có ~10\%~ số test thỏa mãn: ~1 \le N \le 1000, 1 \le M \le 60000~.
Bình luận