Đ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.

staffagent

Những chiếc rương bị yểm

100 điểm

Trên con đường đến ngôi làng của một nàng công chúa có \(N\) chiếc rương vàng nằm nối tiếp nhau theo thứ tự đi qua. Rương thứ \(i\) chứa \(x_i\) đồng vàng. Tuy nhiên, những chiếc rương này bị yểm bùa: nếu bạn đã lấy vàng ở rương \(i-1\) thì rương \(i\) sẽ không mở ra được nữa. Nói cách khác, không được lấy hai rương liên tiếp.

Hãy tính tổng số đồng vàng lớn nhất có thể mang đi.

Input

  • Dòng đầu tiên chứa số nguyên \(t\) là số bộ test.
  • Mỗi bộ test gồm hai dòng: dòng đầu chứa số nguyên \(N\) là số rương; dòng tiếp theo chứa \(N\) số nguyên \(x_1, x_2, \dots, x_N\) (nếu \(N = 0\) thì dòng này để trống).

Output

Với mỗi bộ test, in ra một dòng là số vàng lớn nhất thu được.

Constraints

  • \(1 \le t \le 10\)
  • \(0 \le N \le 10^4\)
  • \(0 \le x_i \le 10^4\)

Sample Input

3
6
4 1 1 9 1 3
0

4
5 5 5 5

Sample Output

16
0
10

Explanation

Bộ test đầu: lấy các rương 4, 9, 3 (vị trí 1, 4, 6) được \(16\). Bộ test thứ hai không có rương nào. Bộ test thứ ba: lấy hai rương cách nhau, được \(10\).

root

Tổng đoạn con

100 điểm

Bạn có một dãy số nguyên gồm \(n\) phần tử. Trải qua thời gian, dãy số này liên tục thay đổi và bạn cần xử lý một loạt các truy vấn được đưa ra.

Có tổng cộng \(q\) truy vấn, mỗi truy vấn là một trong hai loại sau:

  • Loại 1: 1 $k$ $u$ --- Cập nhật giá trị phần tử ở vị trí \(k\) thành \(u\).
  • Loại 2: 2 $a$ $b$ --- Trong tất cả các đoạn con bắt đầu tại \(a\) và kết thúc tại \(i\) với \(a \le i \le b\), hãy tìm đoạn con có tổng lớn nhất.

Cụ thể hơn, với truy vấn loại 2, bạn cần xét các đoạn \([a, a], [a, a+1], \dots, [a, b]\) và chọn ra đoạn có tổng lớn nhất.

Input

  • Dòng đầu tiên chứa hai số nguyên \(n\) và \(q\) (\(1 \le n, q \le 2 \cdot 10^5\)) --- độ dài ban đầu của dãy và số lượng truy vấn.
  • Dòng thứ hai chứa \(n\) số nguyên \(x_1, x_2, \dots, x_n\) (\(-10^9 \le x_i \le 10^9\)) --- các phần tử ban đầu của dãy.
  • \(q\) dòng tiếp theo, mỗi dòng mô tả một truy vấn theo một trong hai dạng:

  • 1 $k$ $u$ --- cập nhật \(x_k \leftarrow u\), với \(1 \le k \le n\), \(-10^9 \le u \le 10^9\).

  • 2 $a$ $b$ --- truy vấn tổng lớn nhất của một đoạn con bắt đầu tại \(a\) và kết thúc tại một vị trí bất kỳ trong đoạn \([a, b]\), với \(1 \le a \le b \le n\).

Output

Với mỗi truy vấn loại 2, in ra một dòng chứa kết quả tương ứng --- tổng lớn nhất của đoạn con được yêu cầu.

Example

Test 1

Input
8 4
1 2 -1 3 1 -5 1 4
2 2 6
1 4 -2
2 2 6
2 3 4
Output
5
2
0
Note
  • Ban đầu, dãy là: \([1, 2, -1, 3, 1, -5, 1, 4]\)
  • Truy vấn 2 2 6: các đoạn cần xét là \([2,2], [2,3], [2,4], [2,5], [2,6]\) có tổng lần lượt là: \(2,1,4,5,0\) \(\Rightarrow\) đáp án là \(5\).
  • Truy vấn 1 4 -2: cập nhật phần tử thứ 4 thành \(-2\).
  • Dãy trở thành: \([1, 2, -1, -2, 1, -5, 1, 4]\)
  • Truy vấn 2 2 6: đoạn có tổng lớn nhất là \([2,3,4]\) với tổng \(2 -1 -2 = -1\), nhưng \([2,5]\) có tổng \(2 -1 -2 +1 = 0\), nên đáp án là \(2\) từ \([2,2]\).
  • Truy vấn 2 3 4: đoạn có tổng lớn nhất là \(0\).

root

Trốn tìm

100 điểm

An và Bình đang chơi một trò chơi trốn tìm trong ngôi nhà của họ. Ngôi nhà có \(n\) phòng
và \(m\) cặp phòng được nối với nhau bằng cửa. Các phòng được đánh số từ \(1\) đến \(n\),
và giữa bất kỳ hai phòng nào cũng tồn tại một đường đi.

Bình có một chiến thuật trốn như sau: mỗi khi An bước vào phòng \(v\), Bình sẽ trốn trong phòng \(a_v\).
Ở thời điểm bắt đầu, An chọn phòng xuất phát \(v_0\), và Bình sẽ trốn trong phòng \(a_{v_0}\).

Mỗi lượt chơi diễn ra theo thứ tự:
(1) An chọn một phòng kề với phòng hiện tại của mình và di chuyển sang đó.
(2) Ngay lập tức, Bình biết An đang ở đâu và lập tức di chuyển (có thể đi qua nhiều phòng trong một lượt) tới phòng \(a_u\) tương ứng với phòng mới của An.

Trò chơi kết thúc ngay khi cả hai ở trong cùng một phòng.

Với mỗi phòng xuất phát của An, hãy xác định xem An có thể tìm được Bình trong số bước hữu hạn hay không.
Nếu có, hãy tính số bước ít nhất An cần để chắc chắn tìm thấy Bình, giả sử cả hai đều chơi tối ưu:
An muốn kết thúc trò chơi càng sớm càng tốt, còn Bình muốn kéo dài thời gian càng lâu càng tốt.

\InputFile

Dòng đầu gồm hai số nguyên \(n, m\)
(\(1 \le n \le 2 \cdot 10^5\), \(n - 1 \le m \le \min(5 \cdot 10^5, \frac{n(n-1)}{2})\)) ---
số phòng và số cặp phòng có cửa nối.

Dòng thứ hai gồm \(n\) số nguyên \(a_i\) (\(1 \le a_i \le n\)), mô tả chiến thuật trốn của Bình.

Mỗi dòng trong \(m\) dòng tiếp theo chứa hai số \(x_i, y_i\) (\(1 \le x_i, y_i \le n\), \(x_i \ne y_i\)),
cho biết phòng \(x_i\) và phòng \(y_i\) có cửa nối trực tiếp. Giữa hai phòng bất kỳ có nhiều nhất một cửa.

\OutputFile

In ra \(n\) số.
Số thứ \(i\) là số bước ít nhất để An có thể tìm thấy Bình nếu bắt đầu từ phòng \(i\),
hoặc \(-1\) nếu An không thể tìm thấy Bình.

\Scoring

\begincenter
\begintabularc c l
\hline
Subtask & Điểm & Ràng buộc

\hline
1 & 15 &
\(\, n \le 1000,\; m \le 2000\)

2 & 25 &
\(m = n - 1\)

3 & 30 &
Bình sẽ không bao giờ trốn trong phòng liền kề hoặc trùng với phòng An đang đứng,
và cấu trúc ngôi nhà đảm bảo trò chơi kết thúc trong không quá \(5\) phòng khác nhau

4 & 30 &
Không có ràng buộc bổ sung.

\hline
\endtabular
\endcenter

\Examples

\beginexample
\exmp
4 4
3 4 1 2
1 2
2 3
3 4
4 1

-1 -1 -1 -1

\exmp
8 9
2 3 2 1 6 5 6 7
1 2
1 3
2 4
3 4
4 5
4 6
6 7
5 7
4 8

1 2 2 2 1 1 1 1

\exmp
9 8
1 9 1 1 1 9 9 9 1
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 9

0 1 1 2 1 1 2 1 1

\endexample

\Note

Trong ví dụ thứ hai:
An di chuyển từ phòng \(4\) sang phòng \(8\) ở lượt đầu tiên, và ở lượt thứ hai quay trở lại phòng \(4\).
Bình buộc phải đi qua phòng \(4\) để có thể đi từ phòng \(7\) về phòng \(1\),
vì vậy An tìm được Bình sau \(2\) bước.

\endproblem

staffagent

Nhị phân không hai số 1 kề nhau

100 điểm

Cho số nguyên dương \(n\). Hãy liệt kê các xâu nhị phân có độ dài đúng \(n\) mà không có hai ký tự 1 đứng cạnh nhau.

Input

  • Một số nguyên dương \(n\).

Output

  • Dòng đầu: số \(m\) là số xâu tìm được.
  • \(m\) dòng sau: mỗi dòng một xâu, theo thứ tự từ điển tăng dần.

Constraints

  • \(1 \le n \le 22\)

Sample Input

4

Sample Output

8
0000
0001
0010
0100
0101
1000
1001
1010
Xem thêm