Giải mã các bài toán Codeforces từ A đến H

Mức độ khó: Đỏ, Cam, Vàng, Xanh lá, Xanh dương, Tím, Đen, Đen Bài A Cho hai số nguyên a và b, giải bất phương trình b - 2x ≤ a - x với điều kiện 0 ≤ x ≤ a. Yêu cầu in ra giá trị nhỏ nhất của a - x. Sau khi biến đổi, ta có x ≥ b - a. Từ đó, ta xét các trường hợp để tìm nghiệm tối ưu. #include <cstdio> using namespace std; int main() { ...

Đăng vào ngày 9 tháng 6 lúc 17:22

Giải pháp cho Vòng 6 Cuộc thi Đa trường HDU 2023

Giải pháp cho Vòng 6 Cuộc thi Đa trường HDU 2023 A. Đếm Liên kết đề bài Tóm tắt đề bài Đếm số lượng chuỗi có độ dài \(n\), bảng ký tự kích thước \(m\) có chu kỳ độ dài \(n-k\). Phạm dữ liệu: \(n,m,k\le 10^{18}\). Phân tích giải pháp Khi \(k=n\) đáp án là \(m^n\), ngược lại chuyển sang có Border độ dài \(k\), đáp án là \(m^{n-k}\). Độ phức tạp ...

Đăng vào ngày 5 tháng 6 lúc 19:50

Xóa một nút khỏi Cây Tìm kiếm Nhị phân

Các đặc tính của Cây Tìm kiếm Nhị phân Có ba đặc tính quan trọng của Cây Tìm kiếm Nhị phân (BST) mà bạn nên nắm vững: 1. Duyệt trung thứ tự (In-order traversal) tạo ra một dãy số đã sắp xếp. Thứ tự duyệt: `Con trái -> Nút gốc -> Con phải`. public LinkedList<Integer> duyetTrungThuTu(TreeNode node, LinkedList<Integer> danhSac ...

Đăng vào ngày 4 tháng 6 lúc 19:40

Các bài toán xử lý chuỗi: Đảo ngược, Thay thế và Xoay chuỗi

1. Đảo ngược chuỗi ký tự Mô tả bài toán: Viết một hàm để đảo ngược một chuỗi ký tự. Chuỗi đầu vào được cho dưới dạng một mảng ký tự `s`. Bạn phải sửa đổi mảng đầu vào tại chỗ, không được cấp phát thêm không gian cho một mảng khác và sử dụng không gian phụ trợ O(1). Phương pháp giải: Sử dụng kỹ thuật hai con trỏ, một con trỏ bắt đầu từ đầu chuỗi ...

Đăng vào ngày 4 tháng 6 lúc 18:59

Hướng dẫn các thuật toán STL trong C++

1. Các thuật toán không thay đổi chuỗi Các thuật toán này không làm thay đổi các phần tử trong container mà chúng thao tác. 1.1 find và find_if find(begin, end, value): Tìm phần tử đầu tiên bằng với value, trả về iterator (trả về end nếu không tìm thấy). find_if(begin, end, predicate): Tìm phần tử đầu tiên thỏa mãn một điều kiện nhất định (pr ...

Đăng vào ngày 3 tháng 6 lúc 21:13

Mô hình học ít mẫu mới: Tối ưu hóa giải thuật LeetCode

Dự án LeetCode87: Học thuật toán hiệu quả qua ít mẫu Dự án LeetCode87 là một kho giải pháp thuật toán đa ngôn ngữ, bao gồm các bài toán từ LeetCode, "Kiến thức Cơ bản Lập trình" (剑指 Offer) và "Cẩm nang Phỏng vấn Lập trình viên" (The Art of Programming). Cấu trúc dự án được tổ chức rõ ràng theo loại bài toán và độ khó, giúp người học tiếp cận ...

Đăng vào ngày 3 tháng 6 lúc 04:28

Triển khai Tìm kiếm Nhị phân và Ứng dụng trong Thư viện STL Tiêu chuẩn

Trong các bài toán lập trình, thao tác tìm kiếm xuất hiện thường xuyên. Nếu sử dụng phương pháp tìm kiếm lực lượng (brute-force) với lượng dữ liệu lớn, chương trình sẽ gặp vấn đề về thời gian thực thi (ví dụ: với quy mô (10^5) thì độ phức tạp (O(n^2)) thường vượt quá thời gian cho phép, trong khi (O(nlogn)) thường chấp nhận được). Vì vậy, tìm k ...

Đăng vào ngày 1 tháng 6 lúc 23:28

Tổng hợp thuật toán STL C++ (Phần 1)

1. Thuật toán không thay đổi dãy Các thuật toán này không làm thay đổi các phần tử trong container mà chúng thao tác. 1.1 find và find_if find(begin, end, value): Tìm phần tử đầu tiên bằng value, trả về iterator (trả về end nếu không tìm thấy). find_if(begin, end, predicate): Tìm phần tử đầu tiên thỏa mãn predicate. find_end(begin, end, sub ...

Đăng vào ngày 1 tháng 6 lúc 22:58

Giải bài toán ba lô 0-1 bằng quy hoạch động

Bài toán ba lô 0-1 là một bài toán tối ưu hóa tổ hợp kinh điển. Nó được phát biểu như sau: cho một tập hợp các vật phẩm, mỗi vật phẩm có một trọng lượng và một giá trị nhất định. Với một chiếc ba lô có sức chứa tối đa là W, làm thế nào để chọn ra các vật phẩm sao cho tổng giá trị của chúng là lớn nhất mà không vượt quá sức chứa của ba lô. Tên g ...

Đăng vào ngày 31 tháng 5 lúc 14:33

Bài thực hành số 3

Hoạt động 1: 1 #include <stdio.h> 2 3 char convert_score_to_grade(int point); 4 5 int main() { 6 int point; 7 char level; 8 while(scanf("%d", &point) != EOF) { 9 level = convert_score_to_grade(point); 10 printf("Điểm: %d, Xếp loại: %c\n\n", point, level); 11 } 12 ret ...

Đăng vào ngày 30 tháng 5 lúc 11:12