Giải bài tập thi lập trình
Bài A: Chọn số may mắn
Áp dụng thuật toán tìm kiếm theo chiều sâu (DFS) để sinh các tổ hợp số thỏa mãn điều kiện. Điểm chú ý là cần thêm lệnh return khi kết thúc quá trình đệ quy:
#include <bits/stdc++.h>
using namespace std;
int numbers[100], selected[10], visited[100];
int total;
void generate(int depth) {
if (depth > 6) {
...
Đăng vào ngày 15 tháng 6 lúc 00:52
Phân tích Kỹ thuật và Giải Pháp Codeforces Round 2224 Division 2
Tổng quan về bộ đề
Bộ đề này tập trung vào các kỹ thuật cơ bản trong lập trình thi đấu như thuật toán tham lam, xử lý dãy số và cấu trúc dữ liệu cây. Dưới đây là phân tích chi tiết và cách tiếp cận tối ưu cho các bài toán từ A đến D.
Bài A: Tối ưu hóa thao tác trên dãy số
Vấn đề cốt lõi là xác định thứ tự thực hiện thao tác để tối đa hóa số lư ...
Đăng vào ngày 13 tháng 6 lúc 19:08
Giải các bài toán từ kỳ thi ABC358
Bài A
Đọc hai chuỗi s và t. Nếu s là "AtCoder" và t là "Land", in ra "Yes", ngược lại in "No".
Xem mã nguồn
#include <bits/stdc++.h>
using namespace std;
int main() {
string x, y;
cin >> x >> y;
if (x == "AtCoder" && y == "Land")
cout n >> duration;
vector<int> ready(n);
for (int i = 0; i < n; ++i)
...
Đăng vào ngày 13 tháng 6 lúc 16:00
Các bài toán NOI 2026 - Ghi chú giải bài
A. [QOJ5099] Đường hành hương (1)
Giải bài toán bằng cách sử dụng định lý tổ hợp và thuật toán Ex-Lucas để tính toán hiệu quả. Công thức tổ hợp được biểu diễn dưới dạng tổng các tổ hợp chập i của 2n phần tử, với điều kiện i > n. Độ phức tạp thời gian là O(ω(p)log p), trong đó ω(p) là số lượng số nguyên tố nhỏ hơn p.
#include<bits/stdc++.h&g ...
Đăng vào ngày 11 tháng 6 lúc 05:00
Thuật Toán Mo Cơ Bản: Tối Ưu Hóa Truy Vấn Đoạn
Khái Niệm Cơ Bản
Thuật toán Mo là một phương pháp tiếp cận được thiết kế để giải quyết hiệu quả các bài toán liên quan đến truy vấn đoạn trên dãy số. Kỹ thuật này dựa trên nguyên lý phân khối và thường yêu cầu dữ liệu đầu vào phải ở dạng offline (xử lý tất cả truy vấn sau khi đã biết toàn bộ thông tin). Nếu bài toán buộc phải trả lời ngay lập t ...
Đăng vào ngày 9 tháng 6 lúc 20:33
So sánh hiệu suất I/O giữa C++ cin và C scanf
Người tham gia các cuộc thi lập trình thường gặp thách thức khi dữ liệu đầu vào rất lớn, và việc đọc dữ liệu từ stdin có thể trở thành điểm nghẽn hiệu năng. Các vấn đề như vậy thường đi kèm cảnh báo "Warning: large I/O data". Hãy tạo một tệp thử nghiệm chứa một dòng 16 byte và ký tự xuống dòng, với tổng cộng 1.000.000 dòng, tạo ra tệp 17MB để t ...
Đăng vào ngày 4 tháng 6 lúc 06:06
Phân tích chiến lược giải thuật Codeforces Round 959
A. Diverse Game
Bài toán yêu cầu hoán đổi các phần tử trong ma trận sao cho không có phần tử nào giữ nguyên vị trí cũ. Một cách tiếp cận đơn giản là dịch chuyển các giá trị theo một vòng tuần hoàn. Với mỗi phần tử tại vị trí (i, j) trong ma trận n x m, ta gán giá trị mới bằng (a[i][j] % (n * m)) + 1. Phép toán này đảm bảo mọi giá trị đều đư ...
Đăng vào ngày 4 tháng 6 lúc 01:27
Giải bài toán tìm dãy giảm dài nhất và đếm số lượng dãy con
Mô tả bài toán
Cho một dãy số, tìm độ dài của dãy con giảm dài nhất (Longest Decreasing Subsequence - LDS). Sau đó, đếm số lượng các dãy con giảm có độ dài bằng độ dài này.
Phân tích
Câu hỏi thứ nhất - Tìm độ dài LDS
Chúng ta sử dụng mảng dp[i] để lưu độ dài của dãy giảm dài nhất kết thúc tại vị trí i. Mảng pos[k] lưu vị trí của phần tử cuố ...
Đăng vào ngày 4 tháng 6 lúc 00:30
Ghi chú giải bài tập lập trình (Bản 14)
Liên kết cuộc thi
\(\text{By DaiRuiChen007}\)
A. [P11648] 2236 A.D. (4.5)
Liên kết bài toán
Ta thực hiện phân tách từng bit của \(k\), duy trì tập hợp \(S\) động. Mỗi thao tác cập nhật hoặc truy vấn \(w_x=\sum_{y\in S}a_{x\lor y}\).
Sử dụng DSU để quản lý, mỗi nút chỉ có \(k\) tổ tiên thay đổi trọng số đường đi. Với \(\log n\) cạnh nhẹ, số lần ...
Đăng vào ngày 1 tháng 6 lúc 14:48
Giải thuật và Mã nguồn Các Bài Toán ABC452
A. Xác định Ngày Đặc Biệt
Bài toán yêu cầu kiểm tra xem cặp số nguyên (a, b) có trùng với một trong các ngày cố định: (1,7), (3,3), (5,5), (7,7), hay (9,9). Nếu khớp, in ra "Yes", ngược lại in "No".
#include <iostream>
#include <vector>
using namespace std;
int main() {
int day, month;
cin >> day >> month;
...
Đăng vào ngày 31 tháng 5 lúc 11:48