Hướng dẫn cho HackDream Purple 04-D: Khả năng bí ẩn
Chỉ sử dụng khi thực sự cần thiết như một cách tôn trọng tác giả và người viết hướng dẫn này.
Chép code từ bài hướng dẫn để nộp bài là hành vi có thể dẫn đến khóa tài khoản.
Chép code từ bài hướng dẫn để nộp bài là hành vi có thể dẫn đến khóa tài khoản.
Authors:
- Với 30% test có ~n,q < 100~
- có thể làm thuật ~n ^ 3~ bằng cách for trâu hai đầu ~[l,r]~ và dùng 1 vòng for từ ~l -> r~ để tính toán
- Với 40% test tiếp theo có ~n,q <= 5000~ :
- thay vì for một vòng for bên trong đoạn [l,r] có thể dùng 1 set , gồm các số từ l đi đến n để tinh , ~O(n * n * log(n))~
- Với 30% test còn lại :
- Cần xử lí offline , theo r tăng dần , với mỗi đầu mút r , ta có 1 segmentree với giá trị mỗi nút là vị trí xuất hiện cuối cùng của giá trị = i trên mang n , với mỗi truy vấn ~(l,r)~ chỉ cần walk on segmentree tìm giá trị đầu tiền mà vị trí xuất hiện của nó kh xuất hiện trong đoạn từ l đén r
Bình luận