[Buổi 22][Cây đoạn cơ bản (Segment Tree)][ADV] Bài 1: Truy vấn ngoặc cân bằng trên đoạn
Truy vấn ngoặc cân bằng trên đoạn
Bối cảnh và bài toán
Một chuỗi cấu hình chỉ gồm ( và ). Với mỗi đoạn con được hỏi, hệ thống cần xác định độ dài lớn nhất của một dãy con (giữ nguyên thứ tự nhưng có thể bỏ ký tự) tạo thành chuỗi ngoặc đúng.
Yêu cầu
Trả lời độc lập từng truy vấn đoạn.
Input
- Dòng 1 chứa chuỗi
s. - Dòng 2 chứa
q. qdòng tiếp theo chứal r.
Output
Với mỗi truy vấn, in độ dài dãy con ngoặc đúng dài nhất nằm trong s[l..r].
Ràng buộc
1 <= \|s\| <= 2 * 10^51 <= q <= 10^51 <= l <= r <= \|s\|
Chấm điểm
| Subtask | Điểm | Điều kiện | Official tests |
|---|---|---|---|
| S1 | 20% | |s|, q <= 30 | 01–04 |
| S2 | 30% | |s|, q <= 5000 | 05–10 |
| S3 | 50% | Không có ràng buộc bổ sung | 11–20 |
Ví dụ 1
Input
())(())(())(
4
1 1
1 12
5 11
2 10
Output
0
10
6
6
Giải thích. Mỗi đáp án là hai lần số cặp ngoặc có thể ghép theo đúng thứ tự.
Ví dụ 2
Input
)()(()
3
1 6
2 3
4 6
Output
4
2
2
Giải thích. Các ngoặc dư không bắt cặp được sẽ bị bỏ khỏi dãy con.
Thông tin bài tập
| Thuộc tính | Giá trị |
|---|---|
| Mã bài | DSA-M07-B22-ADV01 |
| Buổi | B22 |
| Loại bài | ADVANCED |
| Mức độ khó | Khó (Hard) |
| Thời gian làm bài khuyến nghị | 75 phút |
| Time limit | 3 giây |
| Memory limit | 256 MB |
| Tổng điểm | 100 |
| Chuẩn ngôn ngữ tham chiếu | C++11 trở lên |
- Yêu cầu ngoài OJ: nộp
Decision Notetheo template đi kèm.
Nguồn: Phỏng theo Codeforces 380C – Sereja and Brackets.
Comments