Đây là câu hỏi rộng, nhưng muốn biết quan điểm của các chuyên gia. Tôi bắt gặp một tài liệu Suffix arrays – a contest approach, cũng tìm thấy một số nhận xét rằng người tham gia phải sẵn sàng với các cấu trúc dữ liệu đã có sẵn trong tay. bây giờ một ngày rất nhiều câu đố lập trình trực tuyến đang đến với thời gian bị ràng buộc. Vì vậy, tôi muốn biết các cấu trúc dữ liệu/thuật toán khác nên sẵn sàng với những gì.Cách tiếp cận cuộc thi lập trình
Trả lời
Kiểm tra các featured articles @ TopCoder này. Họ rất tuyệt.
Khi bạn đang ở đó, tôi khuyên bạn nên tham gia vào các cuộc thi lập trình tại TopCoder. Bởi vì cách tốt nhất để cải thiện là thực hành & tiếp tục tham gia vào các cuộc thi như vậy.
Ngoài ra Project Euler cũng thực sự gây nghiện.
Ngoài ra, hãy xem cuốn sách Programming Challenges, đó là một tham khảo tuyệt vời về chủ đề - nó trình bày các chủ đề cần thiết để thành công trong cuộc thi lập trình, được hậu thuẫn bởi một thẩm phán online.
Tôi đã cạnh tranh được khoảng 10 năm nay và đã tự tạo một thư viện không quá tệ. Hầu hết các đối thủ cạnh tranh thực sự tốt có blog của họ ví dụ như các huyền thoại Petr Mitrichev và ở đó họ giải thích những ý tưởng họ nhận được trên một số vấn đề cạnh tranh. Đọc những điều này có thể giúp bạn - nếu bạn thấy một ý tưởng hay, hãy thực hiện nó và lưu trữ nó. Tôi thêm thuật toán vào thư viện của mình khi tôi thấy sự cố liên quan đến chúng. Bằng cách đó tôi có thể xác minh rằng việc triển khai của tôi là chính xác - tôi chỉ thêm một thuật toán nếu tôi đã vượt qua ít nhất một vấn đề với việc triển khai nó.
Dưới đây là một danh sách với một số các thuật toán tôi có:
- Tôi có một thư viện geometrial khổng lồ với các lớp đại diện cho điểm, đường thẳng, đa giác, phân đoạn, vòng tròn và một số thao tác với họ (đối với ngã tư chẳng hạn, thân lồi của tập hợp các điểm vv)
- Tarjan của algorithm cho các thành phần kết nối mạnh mẽ
- Dinitz thuật toán dòng chảy
- song phương phù hợp với thực hiện
- Min chi phí lưu lượng thực hiện tối đa
- Aho-Corasic chuỗi tìm kiếm thuật toán
- Knuth-morris-pratt chuỗi tìm kiếm thuật toán
- Rabin-Karp chuỗi tìm kiếm thuật toán
- tuyến tính thời gian cây hậu tố sử dụng algorithm
- nhanh lũy thừa ukonnen của
- thực hiện Polynom
- Triển khai số nguyên lớn
- số Fractional thực hiện
- lớp Matrix thực hiện
- Thủ thừa
- Eratosthenes Sieve
- Segment Tree
- Hungarian algorithm
- 2-Sat thuật toán. Đối với điều này tôi sử dụng thuật toán Tarjan đã đề cập ở trên.
Bạn sẽ nhận thấy rằng một số thuật toán cơ bản nhất (như BFS, DFS, Dijkstra) không được đề cập ở trên và đó là vì tôi không triển khai chúng. Những thuật toán này không thể dễ dàng khái quát hóa theo cách mà bạn chỉ cần sao chép và dán chúng và mọi thứ sẽ hoạt động. Ngoài ra, tôi mất ít hơn 5 phút để viết chúng - tôi thường đưa vào thư viện của mình những thuật toán khó thực hiện hoặc dễ mắc lỗi khi triển khai chúng.
- 1. Chuyển tiếp cuộc gọi android theo lập trình
- 2. Mọi người giải quyết các cuộc thi lập trình nhanh như thế nào?
- 3. Tôi làm cách nào để tìm hiểu các thuật toán cho các cuộc thi lập trình?
- 4. Cách tiếp cận đúng với Thuộc tính
- 5. Khởi tạo các biến đối tượng - một cách tiếp cận Java, một cách tiếp cận Python?
- 6. Cách tiếp cận bảng phiên MySQL
- 7. Cách tiếp cận xác thực nhiều trang
- 8. Viết tắt và chức năng để chuẩn bị cho cuộc thi lập trình
- 9. Phương pháp tiếp cận OOP là gì? (hoặc cách tiếp cận CỦA BẠN?)
- 10. Cách tiếp cận xác thực trong ddd
- 11. Android Nested Fragment Cách tiếp cận
- 12. Tiếp cận cấu trúc lại
- 13. Thuật toán lập trình: tìm người chiến thắng trong cuộc thi
- 14. Tiếp cận OTF phông chữ
- 15. Cách tiếp cận tốt để xây dựng trình biên dịch mới là gì?
- 16. Gọi API Java từ .NET - cách tiếp cận tốt nhất
- 17. Cách tiếp cận tốt nhất cho máy khách WCF
- 18. Cách từ chối cuộc gọi có lập trình trong android
- 19. Cách tiếp cận thử nghiệm cho phần mềm đa luồng
- 20. Tạo Cuộc họp Exchange theo Lập trình
- 21. Lập trình cho một cuộc phỏng vấn xin việc
- 22. Tiếp cận mẫu thuộc tính trong scriptlet
- 23. Tiếp cận như chuỗi chữ trong PHP
- 24. Làm thế nào để tiếp cận CI
- 25. Cách tiếp cận viết lại URL DotNetNuke tốt nhất?
- 26. Hotfix/Patch build & cách tiếp cận phân phối
- 27. Thực thi tệp JavaScript trực tiếp từ trình duyệt
- 28. .NET Danh sách cách tiếp cận tốt nhất
- 29. Phương pháp tiếp cận API Profiling API
- 30. Cách tiếp cận danh sách trắng một ứng dụng/exe
Có thể phù hợp hơn với [codegolf.se]? – mac