Điều hướng chính

Ngôn ngữ

Phím tắt

/
Chuyển đến ô tìm bài
g p
Đi đến bài tập
g c
Đi đến kỳ thi
g u
Đi đến người dùng
?
Mở trợ giúp phím tắt

Bài tập

Bài được chọn theo nhịp luyện tập của bạn, cùng mọi bài mới vừa lên.

root

Đếm dãy con

100 điểm

Cho một dãy số nguyên không âm \(a_1,a_2,\ldots,a_n\) và một số nguyên \(\delta\).

  • Đếm số dãy con liên tiếp, khác rỗng mà với mọi hai phần tử bất kỳ trong dãy con đó, chênh lệch không vượt quá \(\delta\) (tức \(\max-\min \le \delta\)).
  • Đếm số dãy con, khác rỗng mà với mọi hai phần tử bất kỳ trong dãy con đó, chênh lệch không vượt quá \(\delta\).

Kết quả có thể rất lớn, hãy in ra hai đáp án theo modulo \(998244353\).

\InputFile

  • Dòng thứ nhất chứa hai số nguyên \(n\) và \(\delta\) (\(1 \le n \le 5\cdot 10^5\), \(0 \le \delta \le 10^9\)).
  • Dòng thứ hai chứa \(n\) số nguyên \(a_1,\ldots,a_n\) (\(0 \le a_i \le 10^9\)).

\OutputFile

In ra hai số nguyên không âm trên một dòng, lần lượt là đáp án của (1) và (2), đều modulo \(998244353\).

\Scoring
\begin itemize

  • Có \(35\%\) số điểm ứng với \(n \le 20\).
  • Có \(25\%\) số điểm ứng với \(a_1 \le a_2 \le \cdots \le a_n\).
  • \(40\%\) số điểm không có ràng buộc gì thêm.
    \end itemize

Example

Test 1

Input
3 1
1 3 2
Output
4 5

Test 2

Input
5 4
1 2 3 4 5
Output
15 31

Test 3

Input
6 0
0 0 1 1 1 0
Output
10 14

root

Giao dịch khoáng sản

100 điểm

Trong một thế giới vũ trụ khác, có một dải mỏ khoáng sản liên tiếp gồm \(n\) khu vực, được đánh số từ \(1\) đến \(n\). Tại mỗi khu vực thứ \(i\), một công ty khai thác có thể thu được lợi nhuận là \(p_i\). Giá trị này có thể âm nếu chi phí khai thác cao hơn giá trị khoáng sản.

Có \(m\) tập đoàn thương mại đến tìm kiếm các hợp đồng khai thác. Mỗi tập đoàn thứ \(k\) đề nghị mua khoáng sản từ một dãy các khu vực liên tiếp, nhưng phải bao gồm tất cả các khu vực từ \(l_k\) đến \(r_k\) (\(1 \le l_k \le r_k \le n\)). Điều này có nghĩa là, nếu công ty chấp nhận lời đề nghị của tập đoàn \(k\), họ phải chọn một dãy khu vực liên tiếp từ \(x_k\) đến \(y_k\) sao cho \(1 \le x_k \le l_k \le r_k \le y_k \le n\).

Mục tiêu của công ty là tối đa hóa lợi nhuận trung bình trên mỗi khu vực được khai thác. Lợi nhuận trung bình của việc khai thác từ khu vực \(u\) đến \(v\) được tính là \(\frac{p_u + p_{u+1} + \dots + p_v}{v - u + 1}\). Công ty muốn tìm cách khai thác tối ưu cho mỗi lời đề nghị, sau đó so sánh để chọn ra hợp đồng tốt nhất.

Yêu cầu: Cho \(n\) giá trị lợi nhuận \(p_1, p_2, \ldots, p_n\) và \(m\) cặp \((l_1, r_1), (l_2, r_2), \ldots, (l_m, r_m)\). Với mỗi lời đề nghị, hãy xác định cách khai thác mang lại lợi nhuận trung bình trên mỗi khu vực là lớn nhất.

Input

  • Dòng đầu tiên chứa một số nguyên dương \(q\) (\(1 \le q \le 1000\)) là số lượng bộ dữ liệu. Tiếp theo là \(q\) nhóm dòng, mỗi nhóm là dữ liệu của một bộ dữ liệu theo khuôn dạng:

  • Dòng đầu chứa một số nguyên dương \(n\) là số khu vực;

  • Dòng thứ hai chứa \(n\) số nguyên \(p_1, p_2, \ldots, p_n\) (\(0 \le |p_i| \le 4 \cdot 10^6\)) lần lượt là lợi nhuận của các khu vực.
  • Dòng thứ ba chứa một số nguyên dương \(m\) là số lời đề nghị;
  • Trong \(m\) dòng cuối cùng, dòng thứ \(k\) chứa hai số nguyên \(l_k\) và \(r_k\) (\(1 \le l_k \le r_k \le n\)).

  • Tổng giá trị của \(n\) trong mỗi file input không quá \(10^6\). Tổng giá trị của \(m\) trong mỗi file input không quá \(5 \cdot 10^5\).

Output

  • Với mỗi bộ dữ liệu, in ra \(m\) giá trị lợi nhuận trung bình lớn nhất tương ứng với \(m\) lời đề nghị. Do các giá trị này là số hữu tỉ, cần in ra dưới dạng số thực và có sai số không quá \(10^{-4}\). Mỗi giá trị được in trên một dòng.

Example

Test 1

Input
1
7
4 2 -5 3 7 -8 -10
3
3 4
6 6
1 7
Output
2.2000000000
0.6666666667
-1.0000000000

Scoring

Gọi \(N\) là tổng các số \(n\) trong \(q\) bộ dữ liệu, \(M\) là tổng các số \(m\) trong \(q\) bộ dữ liệu.

  • Subtask 1 (10 điểm): \(N \le 100\) và \(M \le 100\).
  • Subtask 2 (12 điểm): \(N \le 2000\) và \(M \le 10^5\).
  • Subtask 3 (14 điểm): \(N \le 50000\) và \(M \le 50\).
  • Subtask 4 (20 điểm): \(N \le 50000\) và \(M \le 50000\).
  • Subtask 5 (30 điểm): \(N \le 10^6\) và \(M \le 10^5\).
  • Subtask 6 (14 điểm): \(N \le 10^6\) và \(M \le 5 \cdot 10^5\).

root

Đường kính

100 điểm

Cho một đồ thị vô hướng là cây gồm \(N\) đỉnh. Xét hai tập đỉnh \(A\) và \(B\), ban đầu tập \(A\) chứa toàn bộ \(N\) đỉnh trên cây, còn tập \(B\) rỗng.

Gọi khoảng cách giữa hai đỉnh \(u, v\) là số cạnh ít nhất cần đi qua để đi từ \(u\) đến \(v\) trên cây. Đường kính của một tập đỉnh được định nghĩa là khoảng cách xa nhất giữa hai đỉnh bất kỳ trong tập đó.

Bạn được yêu cầu xử lý \(Q\) truy vấn. Truy vấn thứ \(i\) là một số nguyên \(v_i\), tương ứng với việc xoá đỉnh \(v_i\) khỏi tập \(A\) và thêm nó vào tập \(B\).

Sau mỗi truy vấn, hãy in ra đường kính của tập \(A\) và tập \(B\).

Input

  • Dòng đầu tiên chứa hai số nguyên \(N\) và \(Q\) \((1 \le N \le 4 \cdot 10^5, 1 \le Q < N)\) --- số đỉnh của cây và số truy vấn.
  • \(N - 1\) dòng tiếp theo, mỗi dòng chứa hai số nguyên \(a, b\) \((1 \le a, b \le N)\) mô tả một cạnh nối giữa hai đỉnh \(a\) và \(b\).
  • Dòng tiếp theo gồm \(Q\) dòng, dòng thứ \(i\) chứa một số nguyên \(v_i\) \((1 \le v_i \le N)\) --- truy vấn thứ \(i\).

Output

  • Gồm \(Q\) dòng, dòng thứ \(i\) in ra hai số nguyên --- đường kính của tập \(A\) và đường kính của tập \(B\) sau truy vấn thứ \(i\).

Example

Test 1

Input
5 4
1 2
2 4
1 3
3 5
2
1
4
3
Output
4 0
4 1
1 2
0 3

Scoring

  • Subtask 1 (20 điểm): \(N, Q \le 500\)
  • Subtask 2 (20 điểm): \(N \le 2 \cdot 10^4\), \(Q \le 10^3\)
  • Subtask 3 (20 điểm): Mỗi đỉnh có tối đa hai cạnh nối với nó.
  • Subtask 4 (20 điểm): Khoảng cách giữa hai đỉnh xa nhất trong cây không vượt quá 40.
  • Subtask 5 (20 điểm): Không có ràng buộc gì thêm.
Xem thêm