Tìm kiếm theo chiều rộng và chiều sâu: Cài đặt từ cơ bản đến nâng cao

Tìm kiếm theo chiều rộng (BFS) là kỹ thuật duyệt đồ thị hoặc lưới bắt đầu từ một điểm, mở rộng đều các nút ở cùng một cấp độ trước khi đi sâu hơn. Thực hiện bằng cấu trúc hàng đợi, mỗi đỉnh chỉ được thêm vào một lần nên không cần hoàn tác trạng thái đã duyệt như trong DFS. Cài đặt BFS tìm đường đi ngắn nhất Đoạn mã sau minh họa cách tìm đường ...

Đăng vào ngày 26 tháng 9 lúc 19:29

Chiến lược tìm kiếm DFS và BFS trong giải quyết bài toán không gian trạng thái

1. Khái niệm cốt lõi về tìm kiếm Trong lập trình thuật toán, tìm kiếm (Search) là chiến lược khám phá hệ thống một không gian các lời giải khả thi để tìm ra một hoặc toàn bộ các cấu hình thỏa mãn điều kiện cho trước. Đây là nền tảng của các bài toán tối ưu hóa và tổ hợp khi không có công thức giải trực tiếp. Tìm kiếm theo chiều sâu (Depth-Fir ...

Đăng vào ngày 15 tháng 9 lúc 09:50

Giải các bài toán từ cuộc thi ICPC 2021 khu vực Thẩm Dương

B. Dãy số XOR từng bit Đề bài yêu cầu tìm một dãy số nguyên sao cho mỗi cặp chỉ số (u, v) thỏa mãn điều kiện a[u] ⊕ a[v] = w. Ta có thể mô hình hóa bài toán dưới dạng đồ thị: mỗi số là một đỉnh, mỗi ràng buộc là một cạnh với trọng số tương ứng. Khi xây dựng đồ thị, cần kiểm tra hai trường hợp đặc biệt: tồn tại cạnh trùng lặp hoặc chu trình. Vớ ...

Đăng vào ngày 15 tháng 9 lúc 06:28

Hướng dẫn giải ABC420 (A–E)

Bài A Đề bài: sau y tháng tính từ tháng x thì đang ở tháng mấy. Đây chỉ là một phép toán chia lấy dư đơn giản. void solve() { int currentMonth, delta; cin >> currentMonth >> delta; cout << (currentMonth - 1 + delta) % 12 + 1 << "\n"; } Bài B Yêu cầu tìm số hiệu của người chơi có tổng điểm cao nhất. Ta mô ph ...

Đăng vào ngày 6 tháng 9 lúc 13:49

Phân tích giải thuật trong kỳ thi NHSPC 2023

B. Mô phỏng trí tuệ nhân tạo Giải pháp đơn giản sử dụng phương pháp duyệt toàn bộ. G. Bảo tàng Chọn k hiện vật có giá trị lớn nhất, ưu tiên vị trí bên trái khi giá trị bằng nhau. Di chuyển tối ưu theo thứ tự từ trái sang phải. H. Phân tách số nguyên bằng dãy palindrome Đặt $D_n$ là số cách phân tách. Dãy palindrome có tính chất đệ quy: loại b ...

Đăng vào ngày 1 tháng 8 lúc 22:28

Giải bài toán Lục Cốc 2024 Quốc Gia A: Xoay Lưới 3x3 Bằng BFS

Bài toán Xoay Lưới 3x3 từ Lục Cốc 2024 Quốc Gia A Đây là giải pháp cho bài toán P10578 từ kỳ thi Lục Cốc 2024 Quốc Gia A. Mô tả bài toán Cho một lưới 3x3 (cửu cung), mỗi ô chứa một số khác nhau. Ở mỗi bước, chúng ta có thể chọn một khu vực 2x2 bất kỳ và xoay nó theo chiều kim đồng hồ. Ví dụ: 1 2 3 4 5 6 7 8 9 Xoay vùng góc trên bên phải ...

Đăng vào ngày 15 tháng 7 lúc 14:48

Giải quyết các bài toán đồ thị và luồng trên mạng phổ biến

Bài toán cứu hộ trên đảo hoang (P4011) Bài toán yêu cầu tìm bước đi ngắn nhất từ ô (1,1) đến ô (n,m) trong một mê cung kích thước $n \times m$. Mê cung này không chỉ có các bức tường ngăn cách mà còn có các cánh cửa khóa và chìa khóa tương ứng. Để đi qua một cánh cửa, người chơi phải sở hữu loại chìa khóa phù hợp. Phân tích thuật toán Với yêu ...

Đăng vào ngày 14 tháng 7 lúc 13:49

Giải bài toán 2019 Zheng Rui Luyện tập cấp độ phổ thông (3) - T4: Trái Đất Lang Thang

Trái Đất Lang Thang Mô tả bài toán Mặt trời già hóa nhanh chóng, để tồn tại, nhân loại đã khởi động kế hoạch di tản quy mô lớn mang tên "Trái Đất Lang Thang". Khi kế hoạch bắt đầu, nhân loại phải trả giá đắt. Sự khởi động của động cơ hành tinh khiến Trái Đất ngừng quay, gây ra sóng thần khổng lồ. Để cứu sống nhiều người nhất, chính ph ...

Đăng vào ngày 2 tháng 7 lúc 05:23

Bài toán về cấu trúc cây và giải thuật

P2015 Cây nhị phân táo (f_{u,i}) thể hiện giá trị lớn nhất khi giữ lại i cạnh trong cây con gốc tại u. (f_{u,i}=max{f_{v,j}+f{u,i-j-1}+w}) #include<cmath> #include<queue> #include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #include<algorithm> #define maxn 210 #define maxm 300000 #def ...

Đăng vào ngày 28 tháng 6 lúc 22:47

Các bài toán tháng 3

Hiện tại vẫn đang tập luyện ARC và CF. ARC075E Câu hỏi là tính số lượng khoảng区间的 trung bình lớn hơn hoặc bằng \(k\). Chúng ta có thể biến mỗi số thành tổng của nó và \(k \times độ dài\) của khoảng, sau đó排序. Nếu một phần tử trong danh sách sắp xếp trước vẫn nằm ở vị trí trước một phần tử khác trong danh sách đã sắp xếp, thì khoảng trung b ...

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