Không hỗ trợ Mobile

Chế độ luyện tập yêu cầu môi trường màn hình lớn để làm bài và chống gian lận hiệu quả. Vui lòng truy cập bằng máy tính (Desktop/Laptop) để tiếp tục thao tác.

Quay lại trang chủ

#1313 · SỬA CHUỖI

MÔ TẢ BÀI TOÁN

Cho một chuỗi gồm các ngoặc vuông và ngoặc tròn, có thể thực hiện thay đổi dấu ngoặc bằng các thao tác sau:

  1. Đổi hướng của ngoặc từ mở thành đóng hoặc ngược lại nhưng không thay đổi tính chất của ngoặc, thao tác này có chi phí là 0.

    Ví dụ: có thể đổi ( thành )) thành ( ; có thể đổi [ thành ]] thành [.

  2. Đổi bất kì ngoặc vuông thành ngoặc tròn mà không thay đổi hướng, thao tác này có chi phí là 1.

    Ví dụ: có thể đổi [ thành ( nhưng không được ( thành [ ; tương tự, có thể đổi ] thành ) nhưng không được ) thành ].

Các thao tác này có thể được thực hiện với bất kì thứ tự nào cũng như không giới hạn số lần thực hiện.

Cho một chuỗi S có độ dài NQ câu hỏi có dạng "l r" $(1 \leq l < r \leq N)$. Với mỗi đoạn $S[l .. r]$ hãy cho biết chi phí thấp nhất để sửa thành một dãy ngoặc hợp lệ.

Một dãy ngoặc được coi là hợp lệ nếu thoả mãn những quy tắc sau:

  • Dãy rỗng là một dãy ngoặc hợp lệ.
  • Nếu "s" là một chuỗi ngoặc đúng, thì "(s)" và "[s]" là một chuỗi ngoặc hợp lệ.
  • Nếu "s" và "t" là hai chuỗi ngoặc hợp lệ, thì "st" là một chuỗi ngoặc hợp lệ.

Dữ liệu vào

  • Dòng thứ nhất chứa số nguyên T (1 \leq T \leq 100) - số lượng test.
  • Dòng thứ 2 chứa 2 số nguyên N, Q (2 \leq N \leq 10^6), (1 \leq Q \leq 2 \times 10^5).
  • Dòng thứ 3 chứa một chuỗi S có độ dài N có ít nhất 2 kí tự (S[i] \in {(, ), [, ]} ).
  • Q dòng tiếp theo mỗi dòng chứa 2 số nguyên l, r $(1 \leq l < r \leq N)$, luôn đảm bảo rằng $S[l .. r]$ có độ dài là chẵn.

Biết rằng, tổng độ dài của N ở tất cả các bộ kiểm thử (testcase) không vượt quá 10^6, tổng độ dài của Q ở tất cả các test không vượt quá 2 \times 10^5.

Dữ liệu ra

Với mỗi câu hỏi, yêu cầu in ra một dòng chứa một số nguyên x (x \geq 0) có chi phí thấp nhất để chỉnh sửa dãy ngoặc S[l .. r] thành một dãy ngoặc hợp lệ.

Ràng buộc

BẢNG TỔNG QUAN KẾT QUẢ

# Tài khoản Kết suất Lúc nộp
1
Lê Duy Hải @2280600799
116 ms 10576 KB
1417 Bytes
14/07/2024
01:56
2
118 ms 2908 KB
721 Bytes
26/07/2023
04:49
3
124 ms 2912 KB
721 Bytes
26/07/2023
04:54
4
Lê Duy Hải @2280600799
125 ms 10580 KB
908 Bytes
14/07/2024
01:57
5
Lê Duy Hải @2280600799
126 ms 10580 KB
908 Bytes
14/07/2024
01:57
6
132 ms 2916 KB
721 Bytes
26/07/2023
04:50
7
133 ms 2916 KB
709 Bytes
26/07/2023
04:48
8
134 ms 2912 KB
709 Bytes
26/07/2023
04:48
9
137 ms 2880 KB
454 Bytes
26/07/2023
04:39
10
137 ms 2892 KB
454 Bytes
26/07/2023
04:39
11
137 ms 2904 KB
709 Bytes
26/07/2023
04:48
12
137 ms 4476 KB
1793 Bytes
03/06/2023
18:59
13
138 ms 2908 KB
721 Bytes
26/07/2023
04:49
14
138 ms 4496 KB
1793 Bytes
23/12/2025
15:29
15
139 ms 2908 KB
721 Bytes
26/07/2023
04:48
16
140 ms 2908 KB
709 Bytes
26/07/2023
04:49
17
B
Trần Gia Bảo @2380600172
159 ms 4948 KB
1632 Bytes
13/01/2026
22:49
18
322 ms 34552 KB
1861 Bytes
25/05/2023
14:43
19
820 ms 71580 KB
978 Bytes
22/04/2026
10:53

LỊCH SỬ CÁ NHÂN

Vui lòng đăng nhập để xem lịch sử làm bài của bạn.

THẢO LUẬN BÀI TOÁN

Chưa có thảo luận nào cho bài này.

GỢI Ý & HƯỚNG DẪN

Giải thích ví dụ:

  • Ví dụ 1: Các dấu ngoặc có cùng tính chất, việc thay đổi thành đóng hoặc mở không mất chi phí, nên chi phí là 0.
  • Ví dụ 2:
    • Ở câu hỏi thứ 1, yêu cầu thay đổi với cả chuỗi, S có thể chuyển đổi thành ([([][][])()]) với chi phí là 0.
    • Ở câu hỏi thứ 2, yêu cầu thay đổi (]]], có thể được chuyển thành ([]) với chi phí là 1.
    • Ở câu hỏi thứ 3, yêu cầu thay đổi ([(], có thể được chuyển thành ()() với chi phí là 2.
Viết code