CSES - Forest Queries II

Xem PDF



Tác giả:
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, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 1700 Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Bạn được cho một lưới gồm \(n \times n\) ô tượng trưng cho một khu rừng. Mỗi ô có thể là . (Trống) hoặc * (Có cây). Bạn được giao \(q\) truy vấn, mỗi truy vấn có thể là 1 trong 2 loại sau đây:

  • Loại 1: Có dạng \(1\) \(x\) \(y\), thay đổi trạng thái ô \((x, y)\) từ có cây sang không có cây hoặc ngược lại (chuyển ô \((x, y)\) từ * sang . hoặc ngược lại)

  • Loại 2: Có dạng \(2\) \(x_1\) \(y_1\) \(x_2\) \(y_2\), đếm số ô có cây có trong vùng hình chữ nhật có vị trí góc trái trên là \((x_1, y_1)\) và góc phải dưới là \((x_2, y_2)\)

Input

  • Dòng đầu tiên có 2 số \(n\)\(q\)
  • \(n\) dòng tiếp theo biểu diễn khu rừng. Mỗi dòng có \(n\) kí tự, mỗi kí tự có thể là . hoặc *
  • \(q\) dòng cuối, mỗi dòng là 1 truy vấn loại 1 hoặc 2

Constraints

  • \(1 \leq n < 1000\)
  • \(1 \leq q \leq 2 \cdot 10^5\)
  • \(1 \leq x, y \leq n\)
  • \(1 \leq y_1 \leq y_2 \leq n\)
  • \(1 \leq x_1 \leq x_2 \leq n\)

Output

  • Với mỗi truy vấn loại 2, in ra số ô có cây trong hình chữ nhật.

Example

Test 1

Input
4 3
.*..
*.**
**..
****
2 2 2 3 4
1 3 3
2 2 2 3 4
Output
3
4
Note

Với truy vấn đầu tiên, vùng hình chữ nhật chúng ta đang truy vấn có góc trái trên ở hàng 2, cột 2 và góc phải dưới ở hàng 3, cột 4 có hình dạng như sau:

.**
*..

Có 3 ô *, tức là có 3 ô có cây, do vậy chúng ta in ra 3.

Với truy vấn thứ 2, chúng ta thay đổi trạng thái của ô nằm ở hàng 3, cột 3 từ . thành *. Cả khu rừng bây giờ có dạng:

.*..
*.**
***.
****

Với truy vấn thứ 3, vùng hình chữ nhật đó có dạng:

.**
**.

Có 4 ô *, tức là có 4 ô có cây, do vậy chúng ta in ra 4.

Bình luận

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

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