Thông tin
Sau đây là lời giải của Kỳ thi Tuyển sinh 10 trường THPT chuyên Lê Quý Đôn tỉnh Bà Rịa - Vũng Tàu năm học 2015 - 2016.
Bạn đọc có thể nộp và chấm bài (test tự sinh) TẠI ĐÂY.
Chuẩn bị bởi team Logica, thuộc khuôn khổ dự án The Algitect (ALGI Project)
Cho số nguyên dương . Tính giá trị các biểu thức sau:
Khởi gán . Duyệt qua mọi và cộng vào A.
Độ phức tạp thời gian:
Khởi gán . Duyệt qua mọi và nhân vào B.
Độ phức tạp thời gian:
Gọi . Khi này:
Khởi gán .
Duyệt qua mọi , nếu lẻ thì cộng vào , ngược lại trừ vào .
Độ phức tạp thời gian:
Lưu ý: Vì bài toán liên quan tới số thực. Vậy nên cần sử dụng kiểu dữ liệu double hoặc long double để đảm bảo độ chính xác.
Độ phức tạp thời gian của cả bài toán là tổng độ phức tạp thời gian của từng yêu cầu.
Cho 3 số nguyên dương .
Tip
Bội chung nhỏ nhất của và là:
Sử dụng hàm gcd()
có sẵn trong thư viện STL của C++, dễ dàng tính được đáp án.
Độ phức tạp thời gian:
Đây là độ phức tạp của thuật toán Euclid để tính UCLN.
Nhận xét
Nếu một số nguyên dương là số chính phương thì có số lượng ước lẻ, ngược lại số lượng ước là chẵn.
Chứng minh
Bài toán quy về kiểm tra một số có phải số chính phương hay không.
Ta có thể kiểm tra một số có phải số chính phương hay không bằng cách lấy bình phương phần nguyên của , nói cách khác, kiểm tra biểu thức sau đây có thỏa không:
Độ phức tạp thời gian:
Đây là độ phức tạp của hàm
sqrt()
trong C++ STL.
Độ phức tạp thời gian của cả bài toán là tổng độ phức tạp thời gian của từng yêu cầu.
Cho dãy số nguyên gồm phần tử . Yêu cầu:
Duyệt qua mọi , nếu chia hết cho 2 thì in ra
Độ phức tạp thời gian:
Gọi là giá trị nhỏ nhất của dãy, khởi gán . Duyệt qua mọi , nếu gán .
Độ phức tạp thời gian:
Sử dụng thuật toán kiểm tra số nguyên tố trong căn bậc 2 hoặc sàng nguyên tố Eratosthenes để giải bài toán.
Độ phức tạp thời gian:
Áp dụng quy hoạch động cơ bản.
Gọi là đoạn con có nhiều phần tử âm nhất kết thúc tại i. Khi này:
Đáp án: .
Độ phức tạp thời gian:
Gọi biểu thị có xuất hiện hay không:
Duyệt qua mọi , nếu thì đánh dấu .
Sau đó duyệt qua mọi giá trị , nếu thì là số nguyên dương nhỏ nhất không xuất hiện trong dãy.
Độ phức tạp thời gian:
Độ phức tạp thời gian của cả bài toán là tổng độ phức tạp thời gian của từng yêu cầu.
Cho đoạn thẳng, đoạn thứ kéo dài từ đến . Hỏi số lượng đoạn thẳng giao nhau tại cùng một điểm nhiều nhất là bao nhiêu.
Đây là một bài toán sweep line cơ bản.
Nhận xét
Chỉ điểm đầu và điểm cuối của mỗi đoạn sẽ ảnh hưởng tới số lượng đoạn thẳng giao nhau tại một điểm.
Gọi là số lượng đoạn thẳng có chứa điểm . Với mọi , tăng lên và giảm đi .
Biểu thị khi đến điểm , đoạn thẳng thứ bắt đầu xuất hiện, còn khi đến thì đoạn thẳng thứ kết thúc.
Sau đó duyệt qua mọi điểm có tồn tại trong mảng theo thứ tự tăng dần, ta tính được theo công thức sau .
Tại bất cứ thời điểm nào, cho ta biết số lượng đoạn thẳng đi qua điểm .
Đáp án là .
Độ phức tạp thời gian: