Giải thuật tối ưu cho bài toán cân bằng tải trên ba máy chủ
Phân tích và Tối ưu hóa Bài toán Three Servers
Bài toán đặt ra yêu cầu phân chia một chuỗi các tác vụ có thời gian thực thi xác định vào ba máy chủ sao cho sự chênh lệch giữa máy chủ bận nhất và máy chủ nhàn rỗi nhất là nhỏ nhất.
Hướng tiếp cận ban đầu
Xét trạng thái quy hoạch động với dp[i][j][k], đại diện cho khả năng đạt được sau khi đã xét ...
Đăng vào ngày 22 tháng 9 lúc 23:38
Các thuật toán cơ bản trong lập trình cạnh tranh
Sắp xếp nhanh (Quick Sort)
Thuật toán sắp xếp nhanh sử dụng phương pháp chia để trị, chọn một phần tử làm chốt (pivot) và phân vùng mảng thành hai phần.
void quickSort(vector<int>& nums, int left, int right) {
if (left >= right) return;
int low = left - 1, high = right + 1;
int pivot = nums[(left + right) / 2];
...
Đăng vào ngày 22 tháng 9 lúc 01:46
Duyệt theo chiều sâu - Loại bỏ phần tử trùng lặp trong cấu trúc cây
Thuật toán duyệt theo chiều sâu (Depth-First Search - DFS) là phương pháp khám phá hoặc tìm kiếm trên cây hoặc đồ thị. Thuật toán này sẽ đi sâu nhất có thể theo nhánh của cây. Khi tất cả các cạnh liên quan đến nút v đã được kiểm tra, quá trình sẽ quay lại nút gốc tạo ra cạnh đó. Quy trình này tiếp tục cho đến khi tất cả các nút có thể truy cập ...
Đăng vào ngày 9 tháng 9 lúc 14:01
Phát hiện vòng lặp trong chuyển động của robot
Trong bài toán này, chúng ta cần xác định liệu một robot di chuyển trên mặt phẳng vô hạn có bị mắc kẹt trong một vòng lặp hay không. Robot bắt đầu tại vị trí (0, 0) và ban đầu hướng về phía Bắc.
Các lệnh mà robot có thể nhận được bao gồm:
"G": Di chuyển về phía trước 1 đơn vị.
"L": Rẽ trái 90 độ.
"R": Rẽ phải 90 đ ...
Đăng vào ngày 7 tháng 9 lúc 10:18
Giải thích bài tập: SP5150 JMFILTER - Bộ lọc thư rác (Ghi chú học tập về cấu trúc Disjoint Set)
Giải thích bài tập SP5150
Đề bài
Bài gốc tại trang web SPOJ.
Kiến thức tiên quyết
Cấu trúc dữ liệu Disjoint Set (Union-Find).
Tài khoản SPOJ.
Hướng giải quyết
Bài toán này dễ dàng nhận ra cần sử dụng cấu trúc Disjoint Set. (Nếu chưa biết thì xem phần kết luận cuối bài.)
Với mỗi đỉnh \(i\), ta có thể trực tiếp thiết lập \(parent_i\) là cha của ...
Đăng vào ngày 7 tháng 9 lúc 03:48
Giải bài toán chuỗi con cân bằng X-Y bằng Python và VBA
Chuỗi con cân bằng (hay còn gọi là chuỗi con xen kẽ X-Y với số lượng bằng nhau) là một bài toán phổ biến trong lập trình, đặc biệt hữu ích trong phân tích mẫu, xử lý dữ liệu và tối ưu thuật toán. Dưới đây là cách triển khai bài toán này bằng cả Python và VBA.
1. Bài toán: Tìm chuỗi con dài nhất có số lượng ký tự X và Y bằng nhau
Yêu cầu: Cho ...
Đăng vào ngày 4 tháng 9 lúc 13:43
Ngăn xếp và hàng đợi đơn điệu
Ngăn xếp & Hàng đợi đơn điệu
Ngăn xếp đơn điệu
Giới thiệu
Ngăn xếp đơn điệu là một cấu trúc dữ liệu có tính chất đơn điệu, tức là các phần tử trong ngăn xếp được sắp xếp theo thứ tự tăng dần hoặc giảm dần. Khác với hàng đợi đơn điệu, ngăn xếp chỉ cho phép thao tác ở một đầu.
Quy trình
Thêm phần tử
Khi thêm một phần tử vào ngăn xếp đơn điệu, ...
Đăng vào ngày 3 tháng 9 lúc 16:14
Xóa Node Thứ N Từ Cuối Danh Sách Liên Kết: Sử Dụng Kỹ Thuật Hai Con Trỏ
Cho một danh sách liên kết đơn và một số nguyên n, yêu cầu là xóa node thứ n tính từ cuối danh sách và trả về con trỏ đầu tiên của danh sách sau khi đã xóa.
Ví dụ minh họa
Ví dụ 1:
[1, 2, 3, 4, 5], n = 2 → Kết quả: [1, 2, 3, 5]
Ví dụ 2:
[1], n = 1 → Kết quả: []
Ví dụ 3:
[1, 2], n = 1 → Kết quả: [1]
Phương pháp giải quyết
Điểm khó ở ...
Đăng vào ngày 30 tháng 8 lúc 11:15
Tìm tổng lớn nhất của dãy con liên tục trong mảng
0 Giới thiệu
Đề bài: HZ thỉnh thoảng sẽ sử dụng các câu hỏi chuyên môn để đánh lừa những sinh viên không học ngành máy tính. Hôm nay sau khi cuộc họp của nhóm kiểm thử kết thúc, anh ấy lại nói: Trong nhận dạng mẫu một chiều cổ điển, thường xuyên cần tính toán tổng lớn nhất của vectơ con liên tục. Khi tất cả các phần tử đều là số dương, vấn đề ...
Đăng vào ngày 16 tháng 8 lúc 17:46
Хướng dẫn chi tiết về các thuật toán trong thư viện C++ STL
Thư viện C++ STL cung cấp nhiều thuật toán mạnh mẽ, được phân loại thành các nhóm chức năng khác nhau. Dưới đây là tổng quan chi tiết kèm ví dụ minh họa.
1. Thuật toán không thay đổi (Non-modifying sequence operations)
Các thuật toán này không làm thay đổi nội dung của container.
1.1 Tìm kiếm: find và find_if
find trả về iterator tới phần tử ...
Đăng vào ngày 10 tháng 8 lúc 06:30