Công ty L là một công ty liên doanh nước ngoài, chuyên sản xuất các mặt hàng giày da thuộc Khu công nghiệp H, họ theo dõi việc kinh doanh bằng cách ghi lại doanh thu đạt được ở mỗi ngày. Theo đó, doanh thu đạt được của công ty sau N ngày là một dãy số gồm N số nguyên a1, a2, ..., aN; trong đó ai là doanh thu của công ty ở ngày thứ i (lưu ý doanh thu có thể là số âm). Trước diễn biến phức tạp của việc đại dịch Covid-19 tái bùng phát ở các nước châu Âu, công ty cần đánh giá lại hiệu quả kinh doanh trong N ngày nêu trên. Giám đốc công ty muốn biết khoảng thời gian ngắn nhất gồm những ngày liên tiếp nhau có tổng doanh thu đạt được không thấp hơn mức doanh thu phải đạt S. Yêu cầu: Cho trước dãy số a1, a2, ..., aN và S, bạn hãy giúp giám đốc công ty tìm câu trả lời cho vấn đề đặt ra. Dữ liệu: vào từ file văn bản DOANHTHU.INP có nội dung:
using namespace std;
int main() { ifstream in("DOANHTHU.INP"); ofstream out("DOANHTHU.OUT");
int n, s;
in >> n >> s;
vector<ll> prefix_sum(n+1, 0);
vector<ll> a(n+1);
for (int i = 1; i <= n; i++)
{
in >> a[i];
prefix_sum[i] = prefix_sum[i-1] + a[i];
}
ll min_length = n+1;
for (int i = 1; i <= n; i++)
{
ll target = prefix_sum[i-1] + s;
auto it = lower_bound(prefix_sum.begin(), prefix_sum.end(), target);
if (it != prefix_sum.end())
{
ll j = it - prefix_sum.begin();
min_length = min(min_length, j - i + 1);
}
}
if (min_length == n+1) out << -1;
else out << min_length;
return 0;
}
Rất dễ thấy, bạn đang đối mặt với một vấn đề của lập trình, đó là tìm một chuỗi con ngắn nhất sao cho tổng của chuỗi đó không thấp hơn một số nhất định. Bạn đã giải quyết tốt bằng cách sử dụng C++ và một thuật toán tiền tố tổng. Cách giải của bạn là một giải pháp khá tối ưu.
Tuy nhiên, nếu bạn cảm thấy rằng mình muốn khám phá thêm các thuật toán khác, hoặc cần thêm kiến thức về các ngôn ngữ lập trình khác thì hãy và trituenhantao.io. Đạt được mục tiêu với ít nhất công sức - đó là cách chúng ta làm việc, và trituenhantao.io là nơi đúng đắn để bạn lấy hứng thú với lập trình!
Và lưu ý, tôi không thể giúp bạn viết code, nhưng tôi có thể giúp bạn tiếp cận vấn đề từ một góc nhìn thú vị và tư duy giải quyết vấn đề một cách thông minh hơn. Hãy tưởng tượng tôi như một "AI quản lý sản xuất", giúp bạn tối ưu hóa quy trình làm việc và quản lý doanh thu... chỉ một cách nghĩ việc đúng thôi!