trang chủ / đề bài / dn_tst_23_antnest

Tổ kiến

Đề bài

Mô tả

Các nhà khoa học đang nghiên cứu về tổ kiến, họ mô phỏng tổ kiến trên một lưới ô vuông n×m bao gồm k ô (xi,yi). Các ô này có cấu trúc theo dạng cây: giữa một số cặp ô kề cạnh có kết nối, và hai ô có kết nối có thể di chuyển qua lại lẫn nhau; hai ô bất kì của tổ kiến có thể di chuyển qua lại lẫn nhau thông qua một đường đi duy nhất không lặp lại các ô. Hai ô kề cạnh nhưng không có kết nối thì không đi trực tiếp sang nhau được.

Bây giờ các nhà khoa học quan tâm đến việc nếu xét một hình chữ nhật (x1,y1,x2,y2) và xem xét các ô thuộc tổ kiến nằm trong hình chữ nhật này thì sẽ có bao nhiêu thành phần liên thông (chỉ đi qua các ô của tổ kiến nằm trong hình chữ nhật, theo các kết nối). Các nhà khoa học sẽ xem xét nhiều kịch bản là các hình chữ nhật khác nhau.

Yêu cầu: Cho dữ liệu về tổ kiến và q truy vấn, mỗi truy vấn là một hình chữ nhật, hãy đếm số thành phần liên thông trong hình chữ nhật đó.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên n,m (1≤n,m≤2·105).
  • Dòng thứ hai chứa hai số nguyên k,q (2≤k≤2·105, 1≤q≤2·105).
  • k−1 dòng tiếp theo, mỗi dòng chứa fi,xi,yi mô tả một kết nối: ô (xi,yi) thuộc tổ kiến kết nối với ô (xi+1,yi) nếu fi=h, hoặc kết nối với ô (xi,yi+1) nếu fi=v (1≤xi≤n, 1≤yi≤m, ô được kết nối cũng nằm trong lưới). Các ô thuộc tổ kiến là các ô xuất hiện trong các kết nối; dữ liệu đảm bảo có đúng k ô như vậy và các ô này cùng k−1 kết nối tạo thành một cây.
  • q dòng tiếp theo, mỗi dòng chứa bốn số x1,y1,x2,y2 (1≤x1≤x2≤n, 1≤y1≤y2≤m). Các ô (x,y) được coi là nằm trong hình chữ nhật nếu thỏa mãn x1≤x≤x2, y1≤y≤y2.

Dữ liệu ra

In ra q dòng, dòng thứ j là kết quả của truy vấn thứ j.

Ràng buộc

  • 1≤n,m≤2·105.
  • 2≤k≤2·105, 1≤q≤2·105.
  • fi là kí tự h hoặc v, 1≤xi≤n, 1≤yi≤m.
  • 1≤x1≤x2≤n, 1≤y1≤y2≤m.

Subtasks

  • 20% số test có n,m,k,q≤100.
  • 20% số test có n,m,k,q≤3000.
  • 30% số test có n,m≤3000, k,q≤105.
  • 30% số test còn lại không có ràng buộc gì thêm.

Ví dụ

Input Output Giải thích
4 3
8 4
v 1 1
h 1 1
h 2 1
v 2 1
v 2 2
h 1 3
h 3 1
1 1 4 3
3 2 4 3
3 1 3 1
1 2 3 3
1
0
1
2
Tổ kiến gồm các ô (1,1),(1,2),(1,3),(2,1),(2,2),(2,3),(3,1),(4,1). Truy vấn 1 chứa cả tổ kiến: 1 thành phần. Truy vấn 2 không chứa ô nào. Truy vấn 3 chỉ chứa ô (3,1). Truy vấn 4 chứa các ô (1,2),(1,3),(2,2),(2,3): ô (1,2) chỉ kết nối với (1,1) nằm ngoài hình chữ nhật (nó kề cạnh (1,3) và (2,2) nhưng không có kết nối), ba ô còn lại liên thông, nên có 2 thành phần.
3 3
4 4
v 1 1
h 1 1
v 2 1
1 2 2 2
1 1 2 2
2 1 3 3
3 3 3 3
2
1
1
0
Ví dụ bổ sung. Tổ kiến là khối 2×2 ở góc trên trái với các kết nối (1,1)−(1,2), (1,1)−(2,1), (2,1)−(2,2). Truy vấn 1 chứa (1,2) và (2,2): hai ô kề cạnh nhưng không có kết nối, nên có 2 thành phần.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0