#01 - Data Manipulation

(để t nhờ claude sửa lại format) Kỹ năng quan trọng nhất khi lập trình là hiểu được yêu cầu thuật toán để chọn CTDL phù hợp. Khá nhiều bài ở tầm trung-cao không cần dùng tới Segment Tree -- các bạn có thể chỉ cần dùng các cấu trúc dữ liệu thường dùng trong STL C++, và thậm chí là Policy-Based Data Structure. Những bài mình chọn trong contest này thuộc dạng như vậy. Việc của các bạn trong tuần này như sau: (0) Tìm hiểu tất cả CTDL của STL C++ và PBDS (ext/pb_ds/...) (1) Phân tích điểm mạnh và yếu của các CTDL (2) Đối với các bạn chưa có kinh nghiệm, cách tốt nhất là bruteforce idea. (mình không chắc nhưng các bạn có thể thử) Khi làm các bài tập dưới đây, cố gắng nghĩ thử theo flow sau: - a. Đề bài cho chúng ta những gì, và yêu cầu những gì - b. Chúng ta có thể tổ chức dữ liệu đầu vào theo NHỮNG cách nào? (sắp xếp tăng/giảm dần, nhóm lại e.g. đếm phân phối, ...) - c. Để tính được đáp án, chúng ta cần những gì; những yếu tố đó có thể lưu trữ và tổ chức như thế nào? - d. Sau khi có tất cả thông tin, dựa vào yêu cầu tiền xử lý và các truy vấn cần sử dụng, các bạn nên sử dụng CTDL nào? Sẽ có nhiều chiến thuật tiếp cận và biến đổi khác nhau cho b và c, ví dụ như thêm/bớt "sự kiện", tham lam (bạn nào giỏi Toán thì chứng minh bằng lập luận hoán đổi chẳng hạn), ... (mình không nhớ hết). Trong quá trình học sắp tới, mình hy vọng sẽ giới thiệu cho các bạn đủ công cụ và mô hình để các bạn có thể xây dựng thuật toán cho các bài toán căn bản nhất. (đó là nếu như mình đủ kiên trì (mình dễ procrastinate dù năm nay mình buộc phải dẫy rồi). NHỜ CẢ NHÀ ĐỐC THÚC MÌNH SPAM ZALO VỚI MESS MÌNH NHA) Chúc các bạn vui vẻ với những bài tập của tuần này

Leaderboard