thảo luận [Học Tập] Topic thuật toán

  • Người tạo chủ đề Người tạo chủ đề unknowpc90
  • Ngày bắt đầu Ngày bắt đầu
Map ở C++ là dictionary ở Python hả thím :V, không code C++ nên ko biết
Không thím ơi. Map hay set nó dùng red-back tree, dạng gần giống như cây tự cân bằng ấy. Nên sau khi build xong cái map, mình duyệt từ đầu đến cuối thì nó sẽ theo thứ tự, mặc định nó sẽ là tăng dần.
Còn dict trong python nó dùng hash table. Bên C++ có unordered_map tương tự, cũng dùng hash_table.

Bài trên nếu muốn dùng hash table cũng được, khi đó thì phải sort cái dãy input, build hash table. Sau đó duyệt theo dãy input đã được sort + search trong hash table. Độ phức tạp cũng giống cách t. Nhưng trên C++ có thể cách này sẽ chạy nhanh hơn. Do việc duyệt trên 1 dãy liên tục sẽ it bị miss cache hơn là duyệt trong cái map. :D
 
Không thím ơi. Map hay set nó dùng red-back tree, dạng gần giống như cây tự cân bằng ấy. Nên sau khi build xong cái map, mình duyệt từ đầu đến cuối thì nó sẽ theo thứ tự, mặc định nó sẽ là tăng dần.
Còn dict trong python nó dùng hash table. Bên C++ có unordered_map tương tự, cũng dùng hash_table.

Bài trên nếu muốn dùng hash table cũng được, khi đó thì phải sort cái dãy input, build hash table. Sau đó duyệt theo dãy input đã được sort + search trong hash table. Độ phức tạp cũng giống cách t. Nhưng trên C++ có thể cách này sẽ chạy nhanh hơn. Do việc duyệt trên 1 dãy liên tục sẽ it bị miss cache hơn là duyệt trong cái map. :D
Ờ bài trên python mình nhìn thì thấy dùng hash table. Làm ra thì cũng NlogN do cái sort
IPMM3cD.gif
 
Câu ban đầu thím kia hỏi là 1 số mà thím? Nếu 1 số thì sàng luôn luôn chậm hơn là duyệt qua các ước chứ.
sàng thì để tính tất cả ước trong khoảng 1 lần xong truy vấn nhanh thôi.

preprocess O(nlog(n)), O(1) với mỗi truy vấn.

còn nếu chỉ cần truy vấn 1 lần từ O(sqrt(n)) tính trực tiếp nhanh hơn.
 

Thống kê chủ đề

Ngày tạo
unknowpc90,
Người trả lời cuối
Spaghetti Code,
Trả lời
1.460
Lượt xem
154.157
Quay lại
Lên đầu trang