Hướng dẫn giải của Dịch Vòng Tốt
Chỉ dùng lời giải này khi không có ý tưởng, và đừng copy-paste code từ lời giải này. Hãy tôn trọng người ra đề và người viết lời giải.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.
Lời giải: Good Cyclic Shifts
Hướng tiếp cận
Hoán vị là tốt khi và chỉ khi tránh dãy con (không tồn tại sao cho ).
Thuật toán O(N)
- Tìm phần tử lớn hơn gần nhất bên trái (theo vòng): dùng monotonic stack.
- Tìm phần tử nhỏ hơn gần nhất bên phải (theo vòng): tương tự với stack ngược.
- Với mỗi phần tử , nếu cả hai tồn tại và tạo thành mẫu , đánh dấu khoảng các phép dịch bị cấm bằng mảng hiệu.
- Tính prefix sum và liệt kê các phép dịch không bị cấm.
Độ phức tạp
- Thời gian:
- Bộ nhớ:
Bình luận