Kiểm tra Thủ khoa AtCoder 396

A - Ba Số Bốn Tác giả yêu cầu kiểm tra xem trong dãy số có tồn tại ít nhất một bộ ba số liên tiếp bằng nhau hay không. Giải pháp: Duyệt qua từng bộ ba số liên tiếp trong mảng và so sánh chúng. Mã nguồn: #include <iostream> #include <vector> using namespace std; void kiemtraBaSoTuongDong(){ int n; cin >> n; vector ...

Đăng vào ngày 12 tháng 6 lúc 23:51

Bài tập thực hành con trỏ C++ - Xử lý chuỗi ký tự

Bài 1: Loại bỏ khoảng trắng ở đầu và cuối chuỗi #include <iostream> using namespace std; char* xoaKhoangTrang(char* chuoi); int main() { char s[1024]; // Khai báo mảng ký tự một chiều để lưu chuỗi // Nhập một dòng ký tự, có thể chứa khoảng trắng // Chuỗi nhập được lưu vào s, đọc tối đa 1024 ký tự, tự động thêm '\0' ở cuối ...

Đăng vào ngày 12 tháng 6 lúc 20:59

Ứng dụng STL và Lập trình Tổng Quát trong C++

Ngôn ngữ lập trình C++ hỗ trợ lập trình đa mô hình, bao gồm cả lập trình tổng quát. Lập trình tổng quát có thể được chia nhỏ thành các phương pháp tổng quát và lớp tổng quát. Thư viện Tiêu chuẩn C++ (STL) là một ví dụ điển hình về ứng dụng lập trình tổng quát. Nguyên lý hoạt động của lập trình tổng quát trong C++ là truyền loại dữ liệu thực tế ...

Đăng vào ngày 12 tháng 6 lúc 18:09

Kỹ thuật Hai Con trỏ và Ứng dụng trong Thuật toán

Tổng quan về kỹ thuật hai con trỏ Kỹ thuật hai con trỏ (Two Pointers) là một phương pháp tối ưu hóa thuật toán hiệu quả, giúp giảm độ phức tạp thời gian trong nhiều bài toán. Thay vì sử dụng vòng lặp lồng nhau với độ phức tạp $O(n^2)$, ta sử dụng hai biến chỉ số (con trỏ) để duyệt qua cấu trúc dữ liệu, thường là mảng hoặc danh sách liên kết. Cá ...

Đăng vào ngày 12 tháng 6 lúc 08:58

Codeforces Round 986 (Div. 2) - Phân tích và giải thuật

Bài A: Di chuyển theo hướng Do giới hạn nhỏ, ta có thể mô phỏng toàn bộ quá trình di chuyển bằng cách lặp lại chuỗi lệnh nhiều lần. Chỉ cần kiểm tra sau mỗi bước xem đã đến tọa độ mục tiêu chưa. #include <iostream> #include <string> using namespace std; void process() { int n, tx, ty; string moves; cin >> n >> tx >> ty ...

Đăng vào ngày 12 tháng 6 lúc 08:21

Hướng dẫn toàn diện về các thuật toán STL trong C++

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

Đăng vào ngày 12 tháng 6 lúc 07:43

Các giải thuật tối ưu cho bộ bài toán cạnh tranh lập trình 2026

A. Tối ưu hóa đường đi trên lưới và cây Cartesian Vì kích thước lưới quá lớn, ta chỉ tập trung vào các điểm biên dạng (0, y). Đường đi được chia nhỏ thành các đoạn dựa trên vị trí cắt qua cột này. Đặt w[y] là độ dài tiền tố liên thông cực đại ở hàng thứ y. Hai điểm (0, u) và (0, v) (với u < v) có thể kết nối trực tiếp khi và chỉ khi tồn tại ...

Đăng vào ngày 12 tháng 6 lúc 02:41

spdlog: tối ưu hiệu năng với thiết kế không khóa và ghi nhật ký bất đồng bộ

Tối ưu Hiệu năng của spdlog với Thiết kế Không Khóa và Cơ chế Ghi Nhật ký Bất đồng bộ spdlog là một thư viện ghi nhật ký C++ hiệu năng cao, được ưa chuộng trong các ứng dụng đòi hỏi độ trễ thấp và thông lượng lớn. Hai yếu tố then chốt mang lại sức mạnh vượt trội cho spdlog là thiết kế không khóa (lock-free) và cơ chế ghi nhật ký bất đồng b ...

Đăng vào ngày 11 tháng 6 lúc 21:40

Xử lý tệp XML và XLSX thành bản đồ, hiển thị trong bảng QT

Tệp XML mẫu: <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <TrTable> <tr id="0" label="TR_PB_CH" text="CH%2"/> <tr id="4" label="TR_PB_CHN" text="Channel"/> <tr id="5" label="TR_PB_WARNING" text="Warning!"/> <tr id="6" label="TR_PB_NOTICE" text="Notice"/> <tr id="7" label="T ...

Đăng vào ngày 11 tháng 6 lúc 05:20

Tìm giá trị góc trái dưới cùng của cây, tổng đường đi trong cây và xây dựng cây từ dãy trung và hậu thứ tự

Tìm giá trị góc trái dưới cùng của cây Phương pháp đệ quy: class Solution { public: void findBottomLeftValueHelper(TreeNode* node, int& maxDepth, int currentDepth, int& result) { if (node == nullptr) return; if (currentDepth > maxDepth) { maxDepth = currentDepth; result = node->val; } ...

Đăng vào ngày 10 tháng 6 lúc 18:33