Tóm tắt cuộc thi AtCoder Beginner 335

Các bài tập ABC335 A. Chuyển đổi chuỗi Đề bài Cho một chuỗi ký tự \(S\) gồm các chữ cái thường và số. \(S\) chắc chắn kết thúc bằng 2023. Thay đổi ký tự cuối cùng của \(S\) thành 4, sau đó in chuỗi đã chỉnh sửa. Giải pháp Có hai cách tiếp cận: Thay thế ký tự cuối cùng bằng 4 và in ra. In \(n-1\) ký tự đầu tiên sau đó thêm 4. Mã nguồn #include ...

Đăng vào ngày 27 tháng 6 lúc 14:32

Thực Hành Các Thuật Toán Căn Bản với Ngôn Ngữ C

Bài viết này khám phá một loạt các bài tập lập trình cơ bản bằng ngôn ngữ C, bao gồm các thuật toán xử lý dữ liệu số, tính toán số học, và các kỹ thuật lập trình đệ quy. Mỗi phần trình bày một vấn đề, giải pháp bằng mã C, và phân tích các khía cạnh quan trọng của việc triển khai. Bài tập 1: Chuyển đổi điểm số thành xếp loại Chức năng chính là ...

Đăng vào ngày 26 tháng 6 lúc 18:58

Khai thác thư viện thuật toán STL trong lập trình C++ hiện đại

1. Các thuật toán không làm thay đổi dữ liệu (Non-modifying) Nhóm thuật toán này thực hiện việc đọc hoặc kiểm tra các phần tử trong container mà không làm biến đổi giá trị của chúng. 1.1. Truy vấn vị trí với find, find_if và find_end find: Trả về iterator đến phần tử đầu tiên khớp với giá trị cần tìm. find_if: Tìm kiếm dựa trên một đi ...

Đăng vào ngày 18 tháng 6 lúc 05:32

Các cấu trúc dữ liệu cơ bản

Các cấu trúc dữ liệu cơ bản Mục lục- Cấu trúc dữ liệu cơ bản Ngăn xếp (stack) Hàng đợi (queue) Hàng đợi hai đầu (deque) Mảng tuần tự và bộ nhớ Tìm hiểu sơ lược về bộ nhớ Mảng tuần tự Hạn chế của mảng tuần tự: cần biết trước kích thước dữ liệu để cấp phát không gian lưu trữ liên tục, và khi mở rộng phải di chuyển dữ liệu. Danh sách liên kết (Li ...

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

Giải quyết các bài toán trong AtCoder Beginner Contest 386

A - Full House 2 Yêu cầu Cho 4 số nguyên, hỏi có thể thêm một số nguyên để có đúng 3 số a và 2 số b không? Cách giải Sử dụng mô phỏng Mã nguồn Xem mã nguồn #include <bits/stdc++.h> using namespace std; void solve() { int A, B, C, D; cin >> A >> B >> C >> D; map<int, int> m; m[A]++; m[ ...

Đăng vào ngày 16 tháng 6 lúc 18:47

Thực hành C++ Hiện đại: Làm Quen với Thư viện Chuẩn và Các Thuật toán STL

Các bài tập sau đây minh họa việc sử dụng hiệu quả các thành phần thiết yếu của thư viện chuẩn C++ (STL), bao gồm std::vector, std::string, thuật toán như std::reverse, std::rotate, std::transform, std::generate, cũng như các hàm xử lý chuỗi và số học. Bài 1: Thao tác chuỗi và mảng động với thuật toán đảo ngược và xoay vòng Dưới đây là phiên b ...

Đăng vào ngày 16 tháng 6 lúc 07:34

Nghiên cứu về các thao tác cơ bản của cấu trúc dữ liệu Stack và Queue

Nghiên cứu về các thao tác cơ bản của cấu trúc dữ liệu Stack và Queue Bài viết này tập trung vào việc khám phá và củng cố các phương pháp thao tác thường gặp với hai cấu trúc dữ liệu cơ bản: Stack (ngăn xếp) và Queue (hàng đợi). Chúng ta sẽ cùng nhau phân tích một số bài toán điển hình để hiểu rõ hơn cách áp dụng chúng trong thực tế. Stack (Ng ...

Đăng vào ngày 15 tháng 6 lúc 21:37

Giải Quyết Các Bài Tập Trong Educational Codeforces Round 186 (CF2182)

A. Chuỗi Năm Mới Đầu tiên, duyệt qua toàn bộ chuỗi để đếm số lần xuất hiện của "2025" và "2026". Nếu số lần xuất hiện của "2025" là 0 hoặc số lần xuất hiện của "2026" không phải là 0, thì không cần thay đổi gì. Ngược lại, nếu có ít nhất một "2025", ta sẽ thay đổi chữ số '5' cuối cùng thành '6'. ...

Đăng vào ngày 13 tháng 6 lúc 17:50

Giải thích: AtCoder Beginner Contest 189

C - Quả Cam Mandarina Đề xuất một phương pháp khác với độ phức tạp \(\mathcal{O}(n \log n)\). Đặt cho vị trí thứ \(i\), vị trí đầu tiên bên trái lớn hơn nó là \(L_i\), và vị trí đầu tiên bên phải lớn hơn nó là \(R_i\). Ta nhận thấy rằng giá trị tối ưu cho vị trí \(i\) khi làm \(x\) chính là \((R_i-L_i-1)\times val_i\). Có thể sử dụng danh sách ...

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

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