USACO 2020 - Help Yourself

Xem PDF



Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 2000 (p) Thời gian: 4.0s Bộ nhớ: 512M Input: bàn phím Output: màn hình

Bessie được cho \(N\) đoạn thẳng (\(1\le N\le 10^5\)) trên một trục số một chiều. Đoạn thẳng thứ \(i\) chứa mọi số thực \(x\) thỏa mãn \(l_i\le x\le r_i\).

Định nghĩa hợp của một tập các đoạn thẳng là tập hợp mọi \(x\) nằm trong ít nhất một đoạn thẳng. Định nghĩa độ phức tạp của một tập các đoạn thẳng là số miền liên thông được biểu diễn trong hợp của chúng.

Bessie muốn tính tổng độ phức tạp trên tất cả \(2^N\) tập con của tập \(N\) đoạn thẳng đã cho, lấy phần dư theo \(10^9+7\).

Thông thường, nhiệm vụ của bạn là giúp Bessie. Nhưng lần này, bạn chính là Bessie và không có ai giúp bạn. Hãy tự giúp mình!

Phân nhóm

  • Các test 2-3 thỏa mãn \(N\le 16\).
  • Các test 4-7 thỏa mãn \(N\le 1000\).
  • Các test 8-12 không có ràng buộc bổ sung.

Dữ liệu vào

Dòng đầu tiên chứa \(N\).

Mỗi dòng trong \(N\) dòng tiếp theo chứa hai số nguyên \(l_i\)\(r_i\). Dữ liệu bảo đảm \(l_i<r_i\) và tất cả các giá trị \(l_i,r_i\) là những số nguyên đôi một phân biệt thuộc đoạn \(1\ldots 2N\).

Dữ liệu ra

In đáp án lấy phần dư theo \(10^9+7\).

Ví dụ

Ví dụ 1

Input
3
1 6
2 3
4 5
Output
8
Giải thích

Độ phức tạp của mỗi tập con khác rỗng được viết dưới đây.

\[ \{[1,6]\}\implies 1, \{[2,3]\}\implies 1, \{[4,5]\}\implies 1 \]
\[ \{[1,6],[2,3]\}\implies 1, \{[1,6],[4,5]\}\implies 1, \{[2,3],[4,5]\}\implies 2 \]
\[ \{[1,6],[2,3],[4,5]\}\implies 1 \]

Đáp án là \(1+1+1+1+1+2+1=8\).

Nguồn

USACO 2020 February Contest, Gold - Help Yourself: https://usaco.org/index.php?page=viewproblem2&cpid=1018

Tác giả: Benjamin Qi.

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.

Kỳ thi: