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
Đếm số lượng dãy con tăng dần dài nhất trong mảng (C++/Java)
Cho một mảng các số nguyên không sắp xếp, hãy tìm số lượng dãy con tăng dần dài nhất.
Ví dụ 1:
Input: [1,3,5,4,7]
Output: 2
Giải thích: Hai dãy con tăng dần dài nhất là [1, 3, 4, 7] và [1, 3, 5, 7].
Ví dụ 2:
Input: [2,2,2,2,2]
Output: 5
Giải thích: Dãy con tăng dần dài nhất có độ dài 1, và có 5 phần tử như vậy, nên kết quả là 5.
Phân tí ...
Đăng vào ngày 23 tháng 8 lúc 22:52
Phân biệt length và length() trong Java
Trong Java, length và length() đều dùng để lấy kích thước, nhưng chúng thuộc về hai khái niệm khác nhau: length là thuộc tính của mảng, còn length() là phương thức của lớp String.
Ví dụ cơ bản
int[] scores = new int[5];
System.out.println(scores.length); // thuộc tính, không có dấu ngoặc
String name = "example";
System.out.println(name.l ...
Đăng vào ngày 23 tháng 8 lúc 06:46
Tìm tổng đường đi lớn nhất trong cây nhị phân bằng thuật toán DFS
1. Phân tích bài toán và những điểm mấu chốt
Bài toán yêu cầu tìm tổng giá trị lớn nhất của một đường đi trong cây nhị phân. Theo định nghĩa, một đường đi là một chuỗi các nút trong đó mỗi cặp nút liên tiếp đều có cạnh nối và mỗi nút chỉ xuất hiện tối đa một lần. Điều này dẫn đến hai đặc điểm quan trọng:
Điểm bắt đầu và kết thúc tự do: Đ ...
Đăng vào ngày 9 tháng 8 lúc 03:07
Giải pháp cho các bài toán CSP-S 2025 Mô phỏng 11
Bài T1: Phép XOR
Để giải quyết bài toán này, chúng ta sử dụng phương pháp chênh lệch. Mỗi lần thay đổi sẽ được chuyển đổi thành dạng chênh lệch như sau:
1
1 x
1 x x
x -1 -1 -1
Sau đó, chúng ta thực hiện tổng tiền tố theo đường chéo để tính kết quả cuối cùng. Dưới đây là mã nguồn C++ minh họa:
#include <bits/stdc++.h>
using namespace ...
Đăng vào ngày 3 tháng 8 lúc 22:45
Nghiên cứu và thực hành Dynamic Programming trên cấu trúc cây
Nghiên cứu và thực hành Dynamic Programming trên cấu trúc cây
Cấu trúc cây là nền tảng quan trọng trong nhiều bài toán tối ưu hóa và xử lý đồ thị. Khi kết hợp với Dynamic Programming (DP), chúng ta có thể giải quyết hiệu quả các bài toán liên quan đến đường đi, phân bố trọng lượng, lựa chọn nút độc lập, và quy hoạch có ràng buộc. Bài viết này t ...
Đăng vào ngày 13 tháng 7 lúc 22:08
Hướng Dẫn Giải Bài Tập Thuật Toán CEIT 2024 Tuần 3
A. Định dạng văn bản Orange
Để xử lý đầu vào đa dòng, chúng ta dùng vòng lặp while kết hợp hàm getline. Biến đếm dòng và tìm độ dài tối đa của các dòng:
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main() {
string line;
int soDong = 0, maxDai = 0;
while (getline(cin, line)) { ...
Đăng vào ngày 10 tháng 7 lúc 03:39
Kỹ Thuật Đếm Số Bằng Quy Hoạch Động Trên Cơ Số
Kỹ thuật số位 DP giải quyết bài toán đếm số thỏa mãn điều kiện trong khoảng [L, R] thông qua việc xử lý từng chữ số. Mô hình trạng thái thường có dạng dp[length][firstDigit][target], với length là độ dài số, firstDigit là chữ số đầu tiên, target là giá trị cần đếm.
Bài toán minh họa: Đếm tần suất chữ số (P2602)
Xây dựng mảng digitCount với dig ...
Đăng vào ngày 1 tháng 7 lúc 06:23
Giải pháp chi tiết LeetCode Weekly Contest 399
Bài 1: Tổng số cặp số tốt I
Đối với bài toán này, chúng ta cần đếm số lượng cặp chỉ số (i, j) sao cho nums1[i] chia hết cho nums2[j] * k. Do giới hạn kích thước của mảng là nhỏ (n, m <= 50), chúng ta có thể sử dụng phương pháp mô phỏng trực tiếp (brute-force) bằng cách duyệt qua tất cả các cặp có thể.
class Solution {
public:
int numberO ...
Đăng vào ngày 18 tháng 6 lúc 18:25
Ma trận nhân và lũy thừa ma trận nhanh trong giải thuật cơ bản
Nhân ma trận
Một phép toán cơ bản nhưng quan trọng trong nhiều bài toán lập trình là phép nhân ma trận. Để thực hiện phép nhân giữa hai ma trận \( A \) và \( B \), điều kiện cần là số cột của \( A \) phải bằng số hàng của \( B \). Cụ thể, nếu \( A \) có kích thước \( n \times m \) và \( B \) có kích thước \( m \times k \), thì kết quả \( C = A ...
Đăng vào ngày 17 tháng 6 lúc 16:29