Đề bài
Cho mảng gồm phần tử nguyên dương và số nguyên dương . Đếm số subsequence của có tổng bằng .
Giới hạn:
Link bài: https://lqdoj.edu.vn/problem/23ts10dna4 Cần join link này trước: https://lqdoj.edu.vn/contest/23ts10dna
Lời giải
Lời giải mặc định độc giả đã biết các kiến thức cơ bản về hàm sinh.
Gọi là đáp án với , là hàm sinh của . Dễ thấy:
Nếu nhân thẳng các đa thức trên bằng FFT, ta sẽ có độ phức tạp , vốn còn chậm hơn thuật vét cạn bằng DP Knapsack .
Tuy nhiên, tới đây, ta có một cái trick khá hay, dựa trên nhận xét sau:
Gọi:
Vậy ta tính nhu nào? Với Taylor Series, ta có:
Vậy ta có thể tính trong đơn giản chỉ là for qua các bội và cộng hệ số vào.
Sau đó, ta có thể tính được .
Đáp án cuối cùng là , hay hệ số của trong .
Các bạn có thể xem implement tại đây
Một chút bàn luận
Bài này là một bài rất rất khó với đề ts10, hay thậm chí là đề VOI. Với bài này, trong bối cảnh là kỳ thi offline, không được dùng template và nộp lần, với những người kỳ cựu nhất và biết cả sol thì việc cài đặt bài này là vô cùng khó.
Tuy nhiên, vét cạn bài này lại rất cơ bản và các bạn nên chắc chắn làm được .
Chúc các bạn thành công trong việc full đề ts10 ĐN 2023.
