Nội dung Bài tập
Mã:
BRACKET
Tên:
Dãy ngoặc kì diệu
Dạng thi:
oi
Thang điểm:
7 điểm
Giới hạn thời gian:
2 giây
Giới hạn bộ nhớ:
256 MB
Nguồn bài tập:
VNOI Online 2018
Được tạo bởi:
phuc
Xâu ký tự X gồm các kí tự " ( " và " ) " được coi là một dãy ngoặc đúng, khi và chỉ khi thỏa mãn một
trong ba điều kiện sau:
● X là dãy rỗng;
● X = ( A ) , với A là dãy ngoặc đúng;
● X = AB, với A và B là hai dãy ngoặc đúng.
Xét dãy ngoặc đúng X , kí tự đóng ngoặc ở vị trí j được gọi là tương ứng với kí tự mở ngoặc ở vị trí i,
khi và chỉ khi cả ba điều kiện sau được thỏa mãn:
● i < j ;
● X [ i .. j ] là dãy ngoặc đúng;
● i + 1 > j - 1 hoặc X [ i + 1 .. j - 1] là dãy ngoặc đúng.
Ở đây, kí hiệu X [ i .. j ] là xâu con bắt đầu ở vị trí i và kết thúc tại vị trí j của xâu X .
Có thể chứng minh rằng, trong dãy ngoặc đúng, mỗi mở ngoặc có một và chỉ một đóng ngoặc
tương ứng.
Xét dãy ngoặc ((()))() , ta dễ dàng nhận thấy điều sau:
Vị trí mở ngoặcVị trí đóng ngoặc
1
2
3
7
6
5
4
8

Đếm số dãy ngoặc đúng độ dài n , thoả mãn m điều kiện. Điều kiện thứ i được cho bởi cặp số (xi, yivới ý nghĩa là:
● Vị trí thứ xi của dãy ngoặc phải là mở ngoặc;
● Vị trí thứ yi của dãy ngoặc phải là đóng ngoặc tương ứng của mở ngoặc ở vị trí xi



Dữ liệu:
  • Dòng đầu tiên gồm hai số nguyên dương n và m (1 ≤ n, m ≤ 106 );
  • m dòng sau, mỗi dòng gồm hai số nguyên dương x i và y i (1 ≤ x i ≤ y i ≤ n ).
Kết quả
● In ra phần dư khi chia số lượng dãy ngoặc thỏa mãn cho 109 +7.

Ví dụ 1:

BRACKET.INPBRACKET.OUT
6 1
1 2
2

Giải thích: Hai dãy ngoặc thỏa mãn đề bài là ()()(), ()(()) . Dãy ngoặc ((())) cũng là một dãy ngoặc đúng độ dài 6, nhưng không thỏa mãn đề bài vì đóng ngoặc tương ứng của mở ngoặc ở vị trí 1 nằm ở vị trí thứ 6.

Ví dụ 2:

BRACKET.INPBRACKET.OUT
135 0
0

Giải thích:Rõ ràng không có dãy ngoặc đúng nào độ dài lẻ.

Ví dụ 3:

BRACKET.INPBRACKET.OUT
12 2
1 6
7 12
4

Giải thích: Bốn dãy ngoặc thỏa mãn đề bài là  (()())(()()) , (()())((())) , ((()))(()()) , ((()))((())) . 

Chấm điểm
● Subtask 1 (20% số điểm): 1 ≤ n ≤ 20;
● Subtask 2 (30% số điểm): 1 ≤ n ≤ 200;
● Subtask 3 (30% số điểm): 1 ≤ n ≤ 5000;
● Subtask 4 (20% số điểm): không có ràng buộc gì thêm.

    Quảng cáo
       Ngôn ngữ : 

       Theme : 
Mời bạn soạn code



		



      Ai có thể xem bài này : 

Thông tin



Phần thảo luận