02/10/2018, 15:01

PBCSEQ SPOJ – Các đoạn nguyên

Nguồn đề bài: http://vn.spoj.com/problems/PBCSEQ/ 1. Đề bài PBCSEQ SPOJ Mirko có một tập hợp các đoạn nguyên. Đầu tiên, anh ấy lấy ra 1 đoạn bất kì. Sau đó thực hiện lấy các đoạn khác, sao cho: đoạn lấy ra nằm trong đoạn vừa được lấy trước nó. Mirko tiếp tục cho đến khi không tìm ...

Nguồn đề bài: http://vn.spoj.com/problems/PBCSEQ/

1. Đề bài PBCSEQ SPOJ

Mirko có một tập hợp các đoạn nguyên. Đầu tiên, anh ấy lấy ra 1 đoạn bất kì. Sau đó thực hiện lấy các đoạn khác, sao cho: đoạn lấy ra nằm trong đoạn vừa được lấy trước nó. Mirko tiếp tục cho đến khi không tìm được đoạn thoả mãn nữa.

Yêu cầu

Tìm số đoạn lớn nhất có thể lấy ra.

Dữ liệu

Dòng đầu tiên chứa số nguyên N, là số đoạn nguyên trong tập hợp.

Dòng thứ i trong số N dòng sau, chứa 2 số nguyên A,B biểu thị cho đoạn i.

Kết quả

Một số duy nhất là kết quả của bài toán.

Giới hạn

1 <= N <= 100000

1 <= A < B <= 1000000

Ví dụ

Dữ liệu
3

1 6

2 5

3 4

Kết quả

3
Dữ liệu
6

1 4

1 5

1 6

1 7

2 5

3 5

Kết quả

5

Chú ý: O(N^2) ăn được 50% số test.

2. Hướng dẫn giải PBCSEQ SPOJ

Thuật toán:sử dụng cây BIT và nén dữ liệu;Đầu tiên sắp xếp cặp điểm đầu điểm cuối giảm dần,nếu 2 cặp có điểm đầu trùng nhau thì sắp xếp tăng theo điểm cuối.Sau đó duyệt từ 1 đến n,với mỗi điểm cuối i,tìm điểm cuối j <=i với trọng số max(giả sử là gt),rồi cập nhật giá trị gt+1 vào điểm cuối i bằng cách sử dụng BIT.

mình giải thích hơi kho hiểu,có j thắc mắc các bạn để lại cmt phía dưới, mình sẽ giải đáp cho nhé

3. Code tham khảo PBCSEQ SPOJ

0