Bài toán tối ưu hóa điểm kinh nghiệm trong trò chơi quái vật
Phân tích bài toán
Khi gặp một con quái vật, người chơi có hai lựa chọn: thả hoặc tiêu diệt. Mỗi lựa chọn mang lại số điểm kinh nghiệm khác nhau. Mục tiêu là tìm cách tối đa hóa tổng điểm kinh nghiệm.
Các trường hợp tiếp cận ban đầu
Phương pháp tham lam đơn giản
Tư tưởng ban đầu là so sánh điểm nhận được từ việc thả và tiêu diệt từng con qu ...
Đăng vào ngày 2 tháng 7 lúc 06:52
Giải Pháp Cho Các Bài Toán ICPC Châu Á Nam Kinh 2023
Bài C: Đếm Số Nguyên Tố Modulo
Cho số nguyên tố p và số nguyên m, hãy đếm số lượng giá trị g ≤ m thỏa mãn g^(p-1) ≡ 1 (mod p).
Với số nguyên tố p, định lý Fermat nhỏ khẳng định mọi số nguyên không chia hết cho p đều thỏa mãn điều kiện này. Do đó, kết quả cần tìm là m trừ đi số bội của p trong khoảng từ 1 đến m.
#include <iostream>
using n ...
Đăng vào ngày 2 tháng 7 lúc 03:43
Phân Tích Các Vấn Đề Kỹ Thuật Trong Lập Trình C++
Các vấn đề kỹ thuật liên quan đến lập trình C++ có thể được phân tích và giải quyết thông qua các phương pháp sau:
Gỡ lỗi bằng cách sử dụng nhật ký (Logging)
Ví dụ về việc xây dựng cây nhị phân từ chuỗi trung thứ tự và hậu thứ tự, sử dụng cout để ghi lại quá trình chạy chương trình.
void logOutput(TreeNode* node) {
if (!node) return;
...
Đăng vào ngày 24 tháng 6 lúc 07:06
Giải pháp lập trình cho các bài toán về Tổ hợp, Chuỗi, Quy hoạch động và Số học
A. Mua Vé Số (Buy Lottery Tickets)
Bài toán yêu cầu liệt kê tất cả các tổ hợp 6 số từ một danh sách các số nguyên đầu vào, với điều kiện là các số được chọn phải thỏa mãn tính chất tăng dần. Vì giới hạn của dữ liệu không quá lớn, chúng ta có thể sử dụng thuật toán tìm kiếm theo chiều sâu (DFS) kết hợp với kỹ thuật quay lui (backtracking) để giả ...
Đăng vào ngày 22 tháng 6 lúc 18:06
Kỹ Thuật Tối Ưu Hóa Quy Hoạch Động Trong Bài Toán Xách Túi
Thiết Lập Ký Hiệu
Để đảm bảo tính thống nhất trong các phần phân tích dưới đây, chúng ta định nghĩa các biến như sau:
n: Tổng số nhóm hoặc loại vật phẩm.
C: Giới hạn dung tích của túi (sức chứa).
weight[i]: Khối lượng tiêu hao của vật phẩm loại i.
value[i]: Giá trị thu được khi lấy vật phẩm loại i.
quantity[i]: Số lượng vật phẩm loại i có thể ...
Đăng vào ngày 21 tháng 6 lúc 18:47
Bài tập mô phỏng lập trình thi đấu năm 2024
Bài 1
Chỉ giải thành công bài này. Qua việc mô phỏng các ví dụ và lập bảng cho tất cả các cặp [i,j], có thể dễ dàng nhận ra quy luật. Việc hiện thực hóa khá phức tạp, xem mã nguồn để hiểu rõ hơn.
Mã nguồn bài 1
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const ll MAX_SIZE = 5 * 1145140, MOD = 998244353;
int length ...
Đăng vào ngày 21 tháng 6 lúc 02:26
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
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
Giải pháp cho các bài toán lập trình từ ABC369
Bài A: Đếm số phần tử có thể chèn giữa hai số
Nếu hai số A và B khác nhau, kiểm tra xem hiệu của chúng có chẵn hay không. Nếu chẵn, có thể chèn một số ở giữa → tổng cộng 3 số. Nếu lẻ, chỉ có thể giữ nguyên hai đầu mút → 2 số. Trường hợp A == B, chỉ có duy nhất một giá trị.
#include <bits/stdc++.h>
using namespace std;
int main() {
in ...
Đăng vào ngày 10 tháng 6 lúc 04:51
Xác Suất Tồn Tại Của Mã Tế Sau K Bước Di Chuyển Trên Bàn Cờ
Bài toán: 688. Xác suất tồn tại của mã tế trên bàn cờ
Cách tiếp cận: Có tối đa k * n * n trạng thái, đáp ứng yêu cầu về thời gian.
Phương pháp 1: Đệ quy + Tìm kiếm theo chiều sâu (DFS). Độ phức tạp thời gian là O(k * n²), chi tiết xem trong chú thích.
Phiên bản C++:
class Solution {
public:
// tám hướng di chuyển
int huongDiChuyenX[8]={ ...
Đăng vào ngày 5 tháng 6 lúc 23:10