Editorial for Ma trận
Submitting an official solution before solving the problem yourself is a bannable offence.
Author:
Giá trị trong bài toán là tổng diện tích bao phủ của hình chữ nhật, tương tự là tổng diện tích các vùng được bao phủ bởi số lượng chẵn hình chữ nhật.
Tính tổng diện tích bao phủ của các hình chữ nhật là bài toán cổ điển của kĩ thuật Sweep Line, có thể giải quyết thông qua cấu trúc Segment Tree.
Để tính tổng diện tích của các vùng được bao phủ bởi số lượng chẵn hình chữ nhật, ở mỗi nút của cấu trúc Segment Tree, ta lưu thêm hai giá trị và tương ứng là số lượng ô mang giá trị lẻ và chẵn nằm trong đoạn được quản lý bởi nút . Thao tác cập nhật đối với cấu trúc Segment Tree chỉ bao gồm hai giá trị và , vì vậy khi cập nhật một đoạn, ta cần hoán đổi hai giá trị và của đoạn đó khi cộng hoặc trừ đi một đơn vị, số chẵn trở thành số lẻ và ngược lại.
Ngoài ra để xử lý trường hợp bao gồm cả những ô mang giá trị giá trị cũng là giá trị chẵn, ta lưu thêm giá trị là giá trị nhỏ nhất của ô nằm trong đoạn và là số lượng ô mang giá trị nhỏ nhất của đoạn. Khi , số lượng ô mang giá trị dương và chẵn nằm trong đoạn là , ngược lại khi , ta phải trừ đi số lượng ô mang giá trị , từ đó số lượng ô mang giá trị dương và chẵn là .
Độ phức tạp:
Comments