Đ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

Bảng chênh nhỏ

100 điểm

Cho một hình chữ nhật kích thước \(N \times N\), trong đó mỗi ô chứa một số nguyên có giá trị thuộc từ \(0\) đến \(2\). Hãy đếm số lượng hình chữ nhật con (các hình chữ nhật con phải có cạnh song song với các cạnh của bảng) sao cho:

  • Hiệu giữa giá trị lớn nhất và giá trị nhỏ nhất trong hình chữ nhật con \(\leq 1\).

Input

  • Dòng đầu tiên chứa một số nguyên \(N\) (\(1 \leq N \leq 10^3\)) - kích thước của bảng.
  • \(N\) dòng tiếp theo, mỗi dòng chứa \(N\) ký tự thuộc từ '0' đến '2'.

Output

  • In ra một số nguyên duy nhất - số lượng hình chữ nhật con thỏa mãn điều kiện.

Example

Test 1

Input
3
002
110
120
Output
22

Test 2

Input
4
0001
1102
2222
0000
Output
49

Scoring

  • Subtask 1 (11 điểm): \(N \leq 30\).
  • Subtask 2 (12 điểm): \(N \leq 70\).
  • Subtask 3 (15 điểm): \(N \leq 300\).
  • Subtask 4 (62 điểm): Không có ràng buộc gì thêm.

root

Đường đi trên cây

100 điểm

Cho một đồ thị dạng cây gồm \(n\) đỉnh. Xét \(m\) đường đi với đỉnh xuất phát và kết thúc tương ứng là \(s_i, t_i\ (1 \le s_i \neq t_i \le n, 1 \le i \le m)\), gọi \(w_i\) là trọng số của đường đi thứ \(i\) được tính bằng tổng trọng số các cạnh trên đường đi. Nhiệm vụ của người chơi là gán trọng số các cạnh trên cây, mỗi cạnh gán giá trị bằng \(1\) hoặc \(2\) để \(w_1 \% 2 \le w_2 \% 2 \le \ldots \le w_m \% 2\).

Yêu cầu: Đếm số cách gán trọng số các cạnh thỏa mãn.

Input

  • Dòng đầu chứa hai số nguyên \(n, m\ (n, m \ge 2)\).
  • Dòng thứ hai gồm \(n - 1\) số mô tả cây, số thứ \(k\) là \(p_k\) cho biết đỉnh thứ \(k + 1\) nối với đỉnh \(p_k\ (1 \le p_k < k + 1)\).
  • Tiếp theo là \(m\) dòng, mỗi dòng chứa hai số \(s_i, t_i\).

Output

  • Gồm một dòng chứa một số nguyên \(r\) là số cách gán trọng số cho các cạnh chia dư cho \(10^9 + 7\).

Example

Test 1

Input
3 3
1 1
1 2
2 3
1 3
Output
2
Note
  • Subtask \(1\): \(n, m \le 15\).
  • Subtask \(2\): \(n, m \le 1500\).
  • Subtask \(3\): \(n, m \le 300000\).

root

Danh bạ điện thoại

100 điểm

Trong thế giới hiện đại, việc quản lý danh bạ điện thoại là một nhiệm vụ quan trọng. Một tập hợp các số điện thoại được coi là nhất quán nếu không có số điện thoại nào là tiền tố của một số điện thoại khác.

Gần đây, một công ty viễn thông đã phát hiện ra một sự cố nghiêm trọng trong hệ thống danh bạ của họ. Họ có một số điện thoại khẩn cấp là \(911\), và một khách hàng tên Bob đã đăng ký số điện thoại là \(91125426\). Khi một người cố gắng gọi cho Bob, hệ thống tự động kết nối với số khẩn cấp \(911\) ngay khi ba chữ số đầu tiên được quay, dẫn đến việc không thể liên lạc với Bob.

Bạn là một chuyên gia công nghệ, được yêu cầu kiểm tra một danh sách các số điện thoại để xác định xem nó có nhất quán hay không. Nếu danh sách không nhất quán, bạn cần phát hiện ra điều đó và thông báo cho công ty.

**Yêu cầu: ** Cho một danh sách các số điện thoại, hãy xác định xem có tồn tại hai số điện thoại khác nhau, trong đó một số là tiền tố của số còn lại hay không.

Input

Dữ liệu vào được cung cấp từ đầu vào chuẩn theo định dạng sau:

  • Dòng đầu tiên chứa một số nguyên \(t\) (\(1 \le t \le 40\)), là số lượng bộ test.
  • Mỗi bộ test sẽ bắt đầu với số lượng số điện thoại \(n\) được ghi trên một dòng, \(1 \le n \le 10000\).
  • Sau đó là \(n\) dòng, mỗi dòng ghi duy nhất 1 số điện thoại. Một số điện thoại là một dãy không quá 10 chữ số.

Output

In ra kết quả trên đầu ra chuẩn theo định dạng sau:

  • Với mỗi bộ dữ liệu vào, in ra "YES" nếu danh sách nhất quán và "NO" trong trường hợp ngược lại.

Example

Test 1

Input
2
3
911
97625999
91125426
5
113
12340
123440
12345
98346
Output
NO
YES

root

Kẹo của Minh Anh

100 điểm

Minh Anh là một fan cuồng kẹo! Trước mặt Minh Anh là một bảng kích thước \(n \times n\) gồm các ô kẹo và chướng ngại vật. Minh Anh đang đứng ở ô góc trên bên trái và chỉ được phép di chuyển xuống dưới hoặc sang phải để đi tới ô góc dưới bên phải. Ô hiện tại của Minh Anh không chứa chướng ngại vật.

Trong mỗi ô, hoặc là có một chướng ngại vật, hoặc là có một viên kẹo với một số được ghi trên đó. Trong suốt hành trình, Minh Anh sẽ ăn tất cả kẹo mà cô ấy đi qua (bao gồm cả ô đầu và ô cuối nếu đi qua được) và sau đó nhân tất cả các số trên các viên kẹo đó lại với nhau.

Minh Anh có một số yêu thích là \(k\) và cô ấy muốn tích các số trên những viên kẹo đã ăn được chia hết cho \(k\). Hãy cho biết có bao nhiêu đường đi như vậy. Vì kết quả có thể rất lớn, hãy in ra theo modulo \(998244353\).

Input

  • Dòng đầu tiên chứa hai số nguyên \(n\) và \(k\) \((1 \le n \le 500, 1 \le k \le 10^6)\) --- kích thước bảng và số yêu thích của Iva.
  • Mỗi dòng trong \(n\) dòng tiếp theo mô tả hàng thứ \(i\) của bảng, gồm \(n\) số nguyên \(a_{i,1}, a_{i,2}, \dots, a_{i,n}\):

  • Nếu \(a_{i,j} = -1\) thì ô \((i,j)\) là chướng ngại vật (không thể đi vào).

  • Ngược lại \((1 \le a_{i,j} \le 10^6)\) và ô \((i,j)\) chứa một viên kẹo mang số \(a_{i,j}\).

Output

  • In ra một dòng duy nhất --- số lượng đường đi từ \((1,1)\) đến \((n,n)\) chỉ đi xuống hoặc sang phải, không đi qua chướng ngại vật, sao cho tích các số trên các viên kẹo đã ăn được chia hết cho \(k\), lấy theo modulo \(998\,244\,353\).

Example

Test 1

Input
2 2
3 2
1 4
Output
2

Test 2

Input
3 6
5 2 -1
7 3 6
-1 3 1
Output
3

Scoring

\begintabular|c|c|l|
\hline
Subtask & Điểm & Ràng buộc

\hline
1 & 13 & \(n,\,k,\,a_{i,j} \le 20\)

2 & 17 & \(n,\,k \le 20\)

3 & 33 & \(k \le 20\)

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

\hline
\endtabular

Xem thêm