Đ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

Hợp nhất đoạn

100 điểm

Cho \(n\) đoạn trên trục số, mỗi đoạn được biểu thị bởi cặp số nguyên dương \([l, r]\) trong đó \(l \le r\). Các đoạn này đôi một không có điểm chung hoặc chỉ có điểm chung ở đầu mút. Bạn được cho \(q\) truy vấn, mỗi truy vấn gồm hai số nguyên \((x, y)\) trong đó \(1 \le x \le y \le n\). Với mỗi truy vấn, bạn phải tìm số nguyên không âm \(k\) nhỏ nhất sao cho tồn tại cách nới rộng mỗi đoạn từ đoạn thứ \(x\) đến đoạn thứ \(y\) ra không quá \(k\) đơn vị để với mọi \(x \le i < y\) đoạn thứ \(i\) có giao điểm với đoạn thứ \(i+1\). Lưu ý với mỗi đoạn bạn chỉ được nới rộng sang trái và sang phải một số nguyên đơn vị mà thôi.

Ví dụ, khi \(n = 3\) và có 3 đoạn là \((1, 2), (4, 7), (12, 17)\):

  • Nếu truy vấn \(x = 1\) và \(y = 2\) thì \(k\) nhỏ nhất bằng 1, khi đó ta có thể nới đoạn \((1,2)\) sang phải 1 đơn vị để được đoạn \((1,3)\) và nới đoạn \((4,7)\) sang trái 1 đơn vị để được đoạn \((3,7)\), lúc ấy hai đoạn \((1,3)\) và \((3,7)\) giao nhau.

  • Nếu truy vấn \(x = 2\) và \(y = 3\) thì \(k\) nhỏ nhất bằng 3, khi đó ta có thể nới đoạn \((4,7)\) sang phải 3 đơn vị để được đoạn \((4,10)\) và nới đoạn \((12,17)\) sang trái 2 đơn vị để được đoạn \((10,17)\), lúc ấy hai đoạn \((4,10)\) và \((10,17)\) giao nhau.

  • Nếu truy vấn \(x = 1\) và \(y = 3\) thì \(k\) nhỏ nhất bằng 3, khi đó ta có thể nới đoạn \((1,2)\) sang phải 1 đơn vị để được đoạn \((1,3)\), nới đoạn \((4,7)\) sang trái 1 đơn vị và sang phải 2 đơn vị để được đoạn \((3,9)\), đồng thời nới đoạn \((12,17)\) sang trái 3 đơn vị để được đoạn \((9,17)\), lúc ấy ba đoạn \((1,3)\), \((3,9)\), \((9,17)\) lần lượt giao nhau.

Input

  • Dòng đầu là hai số nguyên \(n\) và \(q\) \((1 \le n \le 5000, 1 \le q \le 10^6)\).
  • Dòng thứ \(i\) trong số \(n\) dòng tiếp theo mô tả đoạn thứ \(i\) gồm hai đầu mút \(l_i, r_i\) \((1 \le l_i < r_i \le 10^9)\). Lưu ý \(r_i \le l_{i+1}\) với mọi \(1 \le i < n\).
  • Mỗi dòng trong số \(q\) dòng tiếp theo mô tả một truy vấn gồm hai số nguyên \(x, y\) \((1 \le x \le y \le n)\).

Output

  • In ra \(q\) dòng, mỗi dòng gồm một số nguyên là số \(k\) nhỏ nhất tìm được cho truy vấn tương ứng.

Example

Test 1

Input
10 7
4 5
17 18
21 23
25 26
29 31
45 51
61 65
76 77
79 81
85 88
3 6
3 5
6 9
1 1
1 10
7 8
1 3
Output
7
2
7
0
9
6
6

Scoring

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

\hline
1 & 15 & \(1 \le n, q \le 2000\), \(l_{i+1} \le r_i + 20\) với mọi \(i\)

\hline
2 & 25 & \(1 \le n, q \le 2000\)

\hline
3 & 60 & Không có ràng buộc gì thêm

\hline
\endtabular

root

Xâu tiền tố

100 điểm

Trong ngôn ngữ học và khoa học máy tính, khái niệm "tiền tố" (prefix) đóng vai trò quan trọng trong nhiều lĩnh vực như xử lý ngôn ngữ tự nhiên, nén dữ liệu, và tìm kiếm thông tin. Một xâu được gọi là tiền tố của xâu khác nếu nó xuất hiện ngay từ đầu của xâu đó, như những chương mở đầu trong một cuốn sách hay những nốt nhạc đầu tiên của một bản giao hưởng.

Xét ví dụ: xâu "tho" là tiền tố của "thơ" và "thơ ca"; xâu "code" là tiền tố của "coder" và "codeforce". Đặc biệt, mọi xâu đều là tiền tố của chính nó, giống như mỗi con người đều bắt đầu từ chính mình.

Bài toán: Trong một thư viện kỹ thuật số lưu trữ \(n\) từ khóa (mỗi từ khóa là một xâu ký tự), ban quản lý muốn phân tích mối quan hệ bao hàm giữa các từ khóa. Cụ thể, họ quan tâm đến việc đếm số cặp từ khóa mà từ khóa này là tiền tố của từ khóa kia. Điều này giúp xây dựng hệ thống gợi ý từ khóa thông minh và tổ chức thông tin khoa học hơn.

Input

  • Dòng thứ nhất chứa số nguyên dương \(n\) \((1 \le n \le 10^6)\) - số lượng từ khóa trong thư viện.
  • \(n\) dòng tiếp theo, mỗi dòng chứa một từ khóa được biểu diễn bằng xâu ký tự chỉ gồm các chữ cái tiếng Anh in thường. Độ dài mỗi từ khóa không vượt quá \(10\) ký tự.

Output

Một số nguyên duy nhất là số lượng cặp từ khóa \((s_i, s_j)\) (với \(i \neq j\)) sao cho \(s_i\) là tiền tố của \(s_j\). Lưu ý rằng cặp \((s_i, s_j)\) và \((s_j, s_i)\) được coi là khác nhau nếu cả hai đều thỏa mãn điều kiện.

Example

Test 1

Input
4
abc
aa
aab
aa
Output
4

Scoring

  • Có \(30\%\) số test ứng với \(30\%\) số điểm của bài thỏa mãn: \(n \le 10^3\).
  • Có \(30\%\) số test khác ứng với \(30\%\) số điểm của bài thỏa mãn: \(10^3 < n \le 10^5\).
  • \(40\%\) số test còn lại ứng với \(40\%\) số điểm của bài không có ràng buộc gì thêm.

root

Chọn ĐTQG Quảng Trị 2026 - Bài 4 : Khóa số

100 điểm

Chuyển đổi số là một xu thế tất yếu với hầu hết các công việc được thực hiện trên môi trường số. Cùng với sự phát triển nhanh chóng của AI, số người tham gia làm việc và đưa thông tin lên môi trường số ngày càng nhiều, song song với đó là nhu cầu nâng cao các giải pháp bảo mật thông tin và khóa số là một trong những giải pháp.

IT làm việc cho một công ty bảo mật và đã nghĩ ra giải pháp mã hóa các chuỗi mật khẩu thành các con số như sau: Từ một xâu \(S\) đã cho chỉ chứa các chữ cái tiếng Anh, IT liệt kê ra tất cả các xâu con khác rỗng của xâu \(S\), sau đó gom các xâu con giống nhau vào cùng một cụm và đếm số lượng xâu trong mỗi cụm. Tiếp theo IT viết chương trình cho sinh ra một số ngẫu nhiên \(N\) và tính số \(T\) là tổng các lũy thừa bậc \(N\) của số lượng xâu của các cụm, \(T\) được gọi là khóa số của xâu \(S\).

Ví dụ: \(N=3\) và xâu \(S\) là "mama" thì các xâu con khác rỗng của \(S\) là: "m", "a", "m", "a", "ma", "am", "ma", "mam", "ama", "mama" được gom thành \(7\) cụm (cụm 1 chứa xâu "m" với số lượng là 2, cụm 2 chứa xâu "a" với số lượng là 2, cụm 3 chứa xâu "ma" với số lượng là 2, cụm 4 chứa xâu "am" với số lượng là 1, cụm 5 chứa xâu "mam" với số lượng là 1, cụm 6 chứa xâu "ama" với số lượng là 1, cụm 7 chứa xâu "mama" với số lượng là 1). Khi này tổng \(T = 2^3 + 2^3 + 2^3 + 1^3 + 1^3 + 1^3 + 1^3 = 28\).

Yêu cầu: Bạn được cho một xâu \(S\) và số \(N\), hãy lập trình tìm khóa số \(T\) tương ứng với xâu \(S\).

Input

  • Gồm một dòng duy nhất chứa xâu ký tự \(S\) và số nguyên dương \(N\) cách nhau bởi một dấu cách (độ dài xâu \(S\) không vượt quá \(10^4\), \(1 \le N \le 10^9\)).

Output

  • Ghi ra một số nguyên duy nhất là phần dư của phép chia \(T\) cho \(10^9+7\).

Example

Test 1

Input
mama 3
Output
28
Note

Xâu \(S\) có \(7\) cụm xâu con khác rỗng với số lượng lần lượt là \(2, 2, 2, 1, 1, 1, 1\), nên \(T = 2^3+2^3+2^3+1^3+1^3+1^3+1^3 = 28\).

Scoring

  • Subtask 1 (\(30\) điểm): Độ dài xâu \(S\) không vượt quá \(10^2\).
  • Subtask 2 (\(30\) điểm): Độ dài xâu \(S\) không vượt quá \(10^3\).
  • Subtask 3 (\(40\) điểm): Không có ràng buộc gì thêm.

root

Xếp chỗ ngồi

100 điểm

Trong buổi sinh hoạt đầu tiên của một câu lạc bộ, có \(n\) thành viên mới đứng thành một hàng ngang, được đánh số từ \(1\) đến \(n\). Thầy giáo chủ nhiệm muốn chia các bạn thành \(m\) nhóm để tiện cho việc sinh hoạt và làm quen. Mỗi nhóm phải bao gồm một dãy các học sinh đứng liên tiếp nhau trong hàng và mỗi nhóm phải có ít nhất một thành viên.

Tuy nhiên, thầy giáo hiểu rằng các bạn học sinh đến từ nhiều lớp khác nhau nên không phải ai cũng đã quen biết nhau. Thầy đã tiến hành một cuộc khảo sát để xác định "mức độ không quen biết" giữa từng cặp học sinh. Mức độ không quen biết giữa bạn thứ \(i\) và bạn thứ \(j\) được cho bởi một số nguyên \(a_{i,j}\).

Để các nhóm hoạt động hiệu quả, thầy giáo muốn sắp xếp các nhóm sao cho tổng mức độ không quen biết của tất cả các nhóm là nhỏ nhất. Mức độ không quen biết của một nhóm được định nghĩa là nửa tổng mức độ không quen biết của tất cả các cặp học sinh bất kỳ trong nhóm đó.

Với \(n\) học sinh đứng thành một hàng và \(m\) nhóm cần chia, cùng với ma trận mức độ không quen biết \(A = [a_{ij}]\), hãy tìm cách chia các học sinh thành \(m\) nhóm liên tiếp sao cho tổng mức độ không quen biết của tất cả các nhóm là nhỏ nhất.

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 hai số nguyên dương \(n, m\) (\(1 \le n \le 4000, 1 \le m \le \min(n, 800)\)).
  • \(n\) dòng tiếp theo, dòng thứ \(i\) chứa \(n\) số nguyên, số thứ \(j\) trên dòng thứ \(i\) là \(a_{ij}\) (\(0 \le a_{ij} \le 9, a_{ij} = a_{ji}, a_{ii} = 0\)).

Output

Một số nguyên duy nhất - tổng mức độ không quen biết nhỏ nhất của \(m\) nhóm

Example

Test 1

Input
3 2
0 2 0
2 0 3
0 3 0
Output
2

Scoring

  • Subtask \(1\) (\(30\%\) số điểm) : \(n \leq 20\).
  • Subtask \(2\) (\(30\%\) số điểm) : \(n \leq 400\).
  • Subtask \(3\) (\(40\%\) số điểm) : không có ràng buộc nào thêm.
Xem thêm