Nguyên lý và Cấu trúc Cây Trịnh Sát

Cây trị sát là một cấu trúc dữ liệu hiệu quả để giải quyết bài toán về các điểm bắt buộc trong đồ thị có hướng. Định nghĩa, Định lý và Quy ước Giả sử có một "đỉnh nguồn" \(s\) làm điểm xuất phát. Giả sử tất cả các đỉnh được đánh số thứ tự theo thứ tự duyệt DFS của chúng. Định nghĩa \(u\) "trị sát" \(v\) có nghĩa là nếu muốn ...

Đăng vào ngày 28 tháng 6 lúc 09:24

Bài Toán Về Tổng Các Chữ Số Và Thao Tác Trên Túi Bóng

Tổng Các Chữ Số Kế Tiếp Ý Nghĩa Bài Toán Xác định liệu có tồn tại số \(m\) sao cho tổng các chữ số của \(m+1\) lớn hơn tổng các chữ số của \(m\) đúng 1 đơn vị. Mã Ví Dụ Xem mã nguồn #include <bits/stdc++.h> using namespace std; typedef long long ll; const int MAX = 500005; void kiemTra() { ll a, b; cin >> a >> b; ...

Đăng vào ngày 27 tháng 6 lúc 19:07

Thư viện STL C++: Các thuật toán phổ biến và ứng dụng

1. Thuật toán không thay đổi cấu trúc dãy Các thuật toán trong nhóm này duyệt qua dữ liệu mà không làm thay đổi thứ tự hay giá trị của các phần tử trong container. 1.1 Tìm kiếm với find và find_if find(begin, end, value): Trả về con trỏ lặp đến lần xuất hiện đầu tiên của value, nếu không thấy thì trả về end. find_if(begin, end, pred): ...

Đăng vào ngày 27 tháng 6 lúc 16:48

Thực hành thuật toán tuần thứ bảy | 454. Tổng bốn số II, 383. Thư đòi nợ, 15. Ba số tổng bằng 0, 18. Bốn số tổng bằng mục tiêu

Các bài tập hôm nay 454. Tổng bốn số II Liên kết bài tập: 454. Tổng bốn số II - LeetCode Phân tích: Nếu không dùng bảng băm (hashmap), phương pháp brute-force với bốn vòng lặp sẽ dẫn đến thời gian chạy quá lâu. Trong bài trước, khi giải bài 242. Kiểm tra chuỗi anagram - LeetCode, ta đã sử dụng một bảng băm để cộng và trừ giá trị. Trong bài 349. ...

Đăng vào ngày 25 tháng 6 lúc 20:40

Các Khái Niệm Cơ Bản Về Đồ Thị và Tìm Kiếm Theo Chiều Sâu

Lý Thuyết Đồ Thị Phân Loại Đồ Thị Đồ thị vô hướng: Cạnh không có hướng xác định Đồ thị có hướng: Cạnh xác định chiều đi giữa các đỉnh Đồ thị có trọng số: Cạnh mang giá trị trọng lượng Bậc Đỉnh Vô hướng: Số cạnh nối với đỉnh Có hướng: Bao gồm bậc vào (số cạnh hướng tới) và bậc ra (số cạnh đi ra) Tính Liên Thông Đồ thị liên thô ...

Đăng vào ngày 24 tháng 6 lúc 04:20

Sắp xếp hợp nhất

Giới thiệu Sắp xếp hợp nhất (Merge Sort) là thuật toán sắp xếp dựa trên nguyên lý chia để trị và đệ quy. Bài viết này trình bày chi tiết về cách triển khai và tối ưu thuật toán này. Nguyên lý hoạt động Thuật toán hoạt động theo 2 bước chính: Chia mảng: Chia mảng thành hai nửa và thực hiện sắp xếp từng nửa. Hợp nhất: Kết hợp hai mảng đã được ...

Đăng vào ngày 24 tháng 6 lúc 02:58

Luyện Tập Cơ Bản Thuật Toán Mùa Đông NowCoder 1

Luyện Tập Mùa Đông NowCoder - Phần 1 Dễ A-Tìm Kiếm DFS #include <bits/stdc++.h> using namespace std; const int N = 1e6 + 10; #define int long long void giai() { int n; cin >> n; string s; cin >> s; map<char, bool> mapD, mapDCap; bool coD = false, coDCap = false; for(int i = 0; ...

Đăng vào ngày 23 tháng 6 lúc 01:44

Phân tích bài toán B4185: Dãy con bội số (Giải thi đấu Trung Sơn 2024)

B4185 [Giải thi đấu Trung Sơn 2024] Dãy con bội số Mô tả bài toán Cho một chuỗi số, hãy đếm số lượng các dãy con liên tục (substring) thỏa mãn điều kiện là bội số của 4 hoặc 5. Lưu ý rằng: Một dãy con có thể bắt đầu bằng chữ số 0. Hai dãy con được coi là khác nhau nếu chúng bắt đầu từ các vị trí khác nhau trong chuỗi. Một dãy con nếu đồng thờ ...

Đăng vào ngày 22 tháng 6 lúc 08:39

Ghi chú đọc sách về Mẫu thiết kế - Mẫu Chiến lược

Danh mục chuỗi ghi chú đọc sách về Mẫu thiết kế Mẫu Chiến lược (Strategy Pattern) Mẫu này định nghĩa một tập hợp các thuật toán, đóng gói từng thuật toán vào những lớp riêng biệt và cho phép chúng có thể hoán đổi lẫn nhau. Mẫu giúp thay đổi thuật toán không làm ảnh hưởng đến các thành phần sử dụng thuật toán. Ứng dụng thực tế: Khi bán hàng tại ...

Đăng vào ngày 22 tháng 6 lúc 01:46

Độ phức tạp của thuật toán: Đại O và biểu diễn tiệm cận

Đại O và biểu diễn tiệm cận Khi tính toán độ phức tạp thời gian, chúng ta không cần phải xác định chính xác số lần thực hiện của chương trình. Việc này có thể rất phức tạp (vì mỗi câu lệnh có thể được biên dịch thành số lượng khác nhau các lệnh). Thay vào đó, chúng ta chỉ cần ước lượng số lần thực hiện đại diện cho mức tăng trưởng. Độ phức tạp ...

Đăng vào ngày 16 tháng 6 lúc 17:11