JOI 2017 - Long Mansion

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: 2500 (p) Thời gian: 3.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Gần nhà JOI-kun có một dinh thự gồm \(N\) phòng nằm trên một hàng từ đông sang tây. Phòng thứ \(i\) tính từ phía đông được gọi là phòng \(i\). Với mỗi \(1\le i<N\), hành lang nối phòng \(i\) và phòng \(i+1\) có thể đi theo cả hai chiều, nhưng muốn đi vào hành lang từ một trong hai đầu phải có chìa khóa loại \(C_i\).

Phòng \(i\) chứa \(B_i\) chìa khóa có loại \(A_{i,1},A_{i,2},\ldots,A_{i,B_i}\). Khi vào một phòng, JOI-kun nhặt tất cả chìa khóa trong đó. Mỗi chìa khóa được dùng không giới hạn số lần; sở hữu nhiều chìa cùng loại không đem lại lợi ích thêm.

Mỗi truy vấn cho hai phòng \(x,y\): nếu JOI-kun xuất hiện tại phòng \(x\) mà không có chìa khóa nào, liệu cậu có thể đi tới phòng \(y\) hay không?

Dữ liệu vào

  • Dòng đầu chứa \(N\).
  • Dòng thứ hai chứa \(N-1\) số nguyên \(C_1,C_2,\ldots,C_{N-1}\).
  • Trong \(N\) dòng tiếp theo, dòng thứ \(i\) chứa \(B_i\) rồi đến \(B_i\) số \(A_{i,1},\ldots,A_{i,B_i}\).
  • Dòng tiếp theo chứa \(Q\).
  • Trong \(Q\) dòng tiếp theo, dòng thứ \(k\) chứa \(X_k,Y_k\).

Dữ liệu ra

Với mỗi truy vấn, in YES nếu có thể đi từ \(X_k\) tới \(Y_k\), ngược lại in NO.

Ràng buộc

  • \(2\le N\le 500\,000\).
  • \(1\le Q\le 500\,000\).
  • \(1\le B_1+B_2+\cdots+B_N\le 500\,000\).
  • \(1\le B_i\le N\).
  • \(1\le C_i\le N\).
  • \(1\le A_{i,j}\le N\).
  • Trong mỗi phòng \(i\), các giá trị \(A_{i,1},\ldots,A_{i,B_i}\) đôi một khác nhau.
  • \(1\le X_k,Y_k\le N\)\(X_k\ne Y_k\).

Phân nhóm

  1. \(5\) điểm: \(N,Q,B_1+\cdots+B_N\le 5\,000\)
  2. \(5\) điểm: \(N,B_1+\cdots+B_N\le 5\,000\)
  3. \(15\) điểm: \(N\le 100\,000\); mọi \(C_i,A_{i,j}\le 20\)
  4. \(75\) điểm: Không có

Giới hạn

  • Thời gian: 3 giây.
  • Bộ nhớ: 256 MB.

Ví dụ

Ví dụ 1

Input
5
1 2 3 4
2 2 3
1 1
1 1
1 3
1 4
4
2 4
4 2
1 5
5 3
Output
YES
NO
NO
YES
Giải thích

Truy vấn đầu có thể đi qua các phòng \(2,1,2,3,4\). Ở truy vấn thứ hai, từ phòng \(4\) chỉ có thể thăm phòng \(3,4\) và lấy chìa loại \(1,3\), nên không tới được phòng \(2\). Ở truy vấn thứ ba không thể lấy chìa loại \(4\) để đi từ phòng \(4\) sang phòng \(5\). Truy vấn cuối đi theo \(5,4,3\).

Ví dụ 2

Input
5
2 3 1 3
1 3
1 2
1 1
1 3
1 2
4
1 3
3 1
4 3
2 5
Output
NO
YES
NO
YES

Ví dụ 3

Input
7
6 3 4 1 2 5
1 1
1 5
1 1
1 1
2 2 3
1 4
1 6
3
4 1
5 3
4 7
Output
YES
NO
YES

Nguồn

JOI 2016/2017 Spring Training Camp, ngày thi 3, bài Long Mansion.

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: