Thử thách cuối cùng

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: 2300 (p) Thời gian: 0.6s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Note: Đề này tạo khá lâu rồi
Sau khi vượt qua gần như toàn bộ thử thách của cuộc hành trình, ledinhbaonam được dẫn tới khu vực sâu nhất của LQDOJ — nơi cất giữ thử thách cuối cùng dành cho những người muốn chạm tới đỉnh cao.
Tại đây tồn tại một mạng lưới cổ đại gồm \(n\) điểm năng lượng, được nối với nhau bởi \(n-1\) liên kết hai chiều sao cho từ bất kỳ điểm nào cũng có thể đi tới mọi điểm khác, và giữa hai điểm bất kỳ luôn tồn tại đúng một đường đi đơn.
Mỗi điểm năng lượng thứ \(i\) mang giá trị sức mạnh \(a_i\).
Theo ghi chép mà PhuocThien để lại, sức mạnh thật sự của mạng lưới không nằm ở từng điểm riêng lẻ, mà nằm trong những đoạn liên tiếp trên các đường đi.
Tuy nhiên, Protoype đã đặt lên toàn bộ hệ thống một quy tắc đặc biệt:

  • Chỉ những đoạn có số lượng đỉnh chia hết cho \(k\) mới có thể được kích hoạt.
    uia đưa ra \(q\) truy vấn.
    Mỗi truy vấn gồm hai đỉnh \(u, v\), yêu cầu bạn xác định:
  • Trên đường đi đơn từ \(u\) đến \(v\), hãy chọn một đoạn liên tiếp gồm số đỉnh chia hết cho \(k\) sao cho tổng giá trị các đỉnh trong đoạn là lớn nhất.
    Nếu không tồn tại đoạn hợp lệ, in ra INF.

Input

  • Dòng đầu chứa ba số nguyên \(n, q, k\) (\(1 \le n, q \le 2 \cdot 10^5, 1 \le k \le 20\))
  • Dòng thứ hai chứa \(n\) số nguyên \(a_1, a_2, \dots, a_n\) (\(-10^9 \le a_i \le 10^9\))
  • \(n-1\) dòng tiếp theo, mỗi dòng chứa hai số nguyên \(x, y\) (\(1 \le x, y \le n,\ x \ne y\)) mô tả một cạnh của cây
  • \(q\) dòng cuối, mỗi dòng chứa hai số nguyên \(u, v\) (\(1 \le u, v \le n\))

Output

Với mỗi truy vấn, in ra một số nguyên là giá trị lớn nhất của đoạn hợp lệ trên đường đi từ \(u\) đến \(v\).
Nếu không tồn tại đoạn thỏa mãn, in ra INF.

Example

Test 1

Input
5 3 2
3 -1 4 2 5
1 2
1 3
2 4
2 5
4 3
5 3
4 5
Output
8
11
4
Note

Truy vấn 1: \(4\ 3\)
Đường đi là: \(4 \rightarrow 2 \rightarrow 1 \rightarrow 3\)
Các đoạn liên tiếp hợp lệ:
- \([4,2] = 2 + (-1) = 1\)
- \([2,1] = -1 + 3 = 2\)
- \([1,3] = 3 + 4 = 7\)
- \([4,2,1,3] = 2 + (-1) + 3 + 4 = 8\)
Đáp án là \(8\).
Truy vấn 2: \(5\ 3\)
Đường đi là: \(5 \rightarrow 2 \rightarrow 1 \rightarrow 3\)
Chọn toàn bộ đường đi: \(5 + (-1) + 3 + 4 = 11\)
Truy vấn 3: \(4\ 5\)
Đường đi là: \(4 \rightarrow 2 \rightarrow 5\)
Các đoạn hợp lệ:
- \([4,2] = 2 + (-1) = 1\)
- \([2,5] = -1 + 5 = 4\)
Đáp án là \(4\).

Bình luận

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

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