Giải thuật mô phỏng cây đỏ đen trong C++
Tính chất của cây đỏ đen
Mỗi nút là màu đỏ hoặc màu đen.
Nút gốc luôn là màu đen.
Nếu một nút là màu đỏ, thì cả hai nút con của nó phải là màu đen.
Tất cả các đường đi từ một nút đến tất cả các nút lá đều chứa cùng số lượng nút đen.
Tất cả các nút lá (nút rỗng) đều là màu đen.
Nút của cây đỏ đen
Trong cây đỏ đen, thay vì sử dụng "h ...
Đăng vào ngày 25 tháng 9 lúc 18:47
Tổng Quan Về Hệ Thống Tập Hợp Trong Lập Trình Java
Hệ sinh thái dữ liệu động trong Java
Khi phát triển các ứng dụng phần mềm, việc lưu trữ nhóm dữ liệu là nhu cầu thường xuyên. Mặc dù mảng (Array) tồn tại từ lâu, nhưng chúng có hạn chế lớn về kích thước cố định, gây khó khăn khi không xác định được số lượng đối tượng cần xử lý lúc viết code. Để giải quyết vấn đề này, gói java.util cung cấp hệ t ...
Đăng vào ngày 22 tháng 9 lúc 15:13
Phân tích và tối ưu bài toán đếm số lượng cách đảo chuỗi con tạo ra số nhỏ hơn
Mô tả bài toán
Cho một chuỗi ký tự số có độ dài n, chỉ bao gồm các chữ số từ 0 đến 9. Chuỗi này có thể được xem như một số thập phân có n chữ số. Nhiệm vụ là chọn ra một chuỗi con liên tục và đảo ngược nó (thực hiện tối đa một lần). Sau khi đảo ngược và đặt lại vào vị trí cũ, ta thu được một số mới. Yêu cầu đặt ra là đếm số lượng cách chọn chuỗ ...
Đăng vào ngày 3 tháng 9 lúc 12:48
Giải bài tập Codeforces Round 950 (Div. 3)
Chào buổi sáng! (00:50:13)
Đây là lần thi khá thuận lợi: giải được tổng cộng 6 bài toán.
A. Tạo Dữ Liệu Thử
Sử dụng cấu trúc ánh xạ để đếm tần suất ký tự.
#include<bits/stdc++.h>
using namespace std;
const int MAX_SIZE = 2e5+10;
int test_cases, n, m;
char input_array[MAX_SIZE];
unordered_map<char, int> frequency;
int main() {
ci ...
Đăng vào ngày 3 tháng 9 lúc 11:58
Triển khai Bảng băm (Hash Table) trong Python
Bảng băm, hay còn gọi là Hash Table, là một cấu trúc dữ liệu hiệu quả được sử dụng rộng rãi để lưu trữ các cặp khóa-giá trị (key-value) và cho phép truy cập dữ liệu với tốc độ rất nhanh. Nguyên lý hoạt động của nó dựa trên việc ánh xạ mỗi khóa đến một vị trí cụ thể trong một mảng (hoặc danh sách) thông qua một hàm băm. Về cơ bản, bạn có thể hìn ...
Đăng vào ngày 26 tháng 8 lúc 19:03
Thuật toán nhân hai số nguyên lớn dưới dạng chuỗi
Trong lập trình, việc xử lý các số nguyên cực lớn vượt quá giới hạn của kiểu dữ liệu long long thường yêu cầu chúng ta phải làm việc trực tiếp trên chuỗi (string). Bài toán "Multiply Strings" yêu cầu thực hiện phép nhân hai chuỗi số nguyên không âm mà không được sử dụng các thư viện hỗ trợ số lớn có sẵn hoặc ép kiểu trực tiếp toàn bộ chuỗi sang ...
Đăng vào ngày 23 tháng 8 lúc 14:02
Triển khai Cấu trúc Dữ liệu Danh sách Tuần tự và Các Thao tác Cơ bản trong C++
Giới thiệu về Danh sách Tuần tự (Sequential List)
Danh sách tuần tự, hay còn gọi là danh sách dựa trên mảng (Array-based List), là một cấu trúc dữ liệu tuyến tính trong đó các phần tử được lưu trữ tại các vị trí bộ nhớ liên tiếp. Đặc điểm này cho phép truy cập ngẫu nhiên (random access) với độ phức tạp thời gian O(1), nhưng việc chèn hoặc xóa p ...
Đăng vào ngày 16 tháng 8 lúc 19:05
Kỹ thuật xử lý hàm, biến tĩnh và thuật toán đệ quy trong ngôn ngữ C
1. Điều khiển vị trí hiển thị văn bản ngẫu nhiên
Trong lập trình console, việc giả lập vị trí hiển thị có thể thực hiện thông qua việc in các dòng trống và khoảng trắng. Ví dụ dưới đây minh họa cách sử dụng hàm rand() để hiển thị một chuỗi ký tự tại các tọa độ ngẫu nhiên trên màn hình sau mỗi khoảng thời gian nhất định.
#include <stdio.h> ...
Đăng vào ngày 13 tháng 8 lúc 04:14
Cơ chế Pushdown và Kỹ thuật Lazy Propagation trong Cấu trúc Dữ liệu
Trong các cấu trúc dữ liệu phân đoạn như Segment Tree (Cây phân đoạn) hay các loại cây cân bằng, hàm pushdown đóng vai trò then chốt trong việc tối ưu hóa hiệu suất. Kỹ thuật này thường được gọi là Lazy Propagation (Lan truyền lười), cho phép chúng ta trì hoãn việc cập nhật các nút con cho đến khi thực sự cần thiết, từ đó giảm độ phức tạp từ $O ...
Đăng vào ngày 24 tháng 7 lúc 15:36
Kỹ thuật tìm kiếm nhị phân tối ưu trên số nguyên và số thực
Tổng quan về thuật toán tìm kiếm nhị phân
Tìm kiếm nhị phân (Binary Search) là một kỹ thuật tối ưu dựa trên chiến lược chia để trị. Khác với lầm tưởng phổ biến rằng thuật toán này chỉ áp dụng được trên các dãy số có tính đơn điệu (tăng dần hoặc giảm dần), bản chất cốt lõi của tìm kiếm nhị phân nằm ở việc xác định điểm biên của một tính chất cụ ...
Đăng vào ngày 24 tháng 7 lúc 00:04