Vấn đề là như sau:không thể hiểu được một giải pháp dp
Lazer Tag bao gồm một vở kịch nhóm, nơi bạn được giao một số cố định của đạn (thường được gọi là bức ảnh Laser) trong toàn bộ trò chơi . Mỗi lần bắn vào kẻ thù mục tiêu của bạn, sẽ cho bạn một điểm.
Cân nhắc chuỗi lượt truy cập và lần bỏ lỡ của bạn có thể được biểu diễn dưới dạng "x" và "o" trong đó "o" biểu thị lần truy cập và "x" biểu thị một lần bỏ lỡ. Giả sử chuỗi có dạng “xxxoooxxxxooxxo”, thì điểm số cuối cùng của bạn sẽ bằng
3^2 + 2^2 +1^2
tôi thêm các ô vuông của mỗi số lần truy cập liên tiếp tối đa trong toàn bộ lần chơi trò chơi.Xác suất nhấn cú đánh chính xác (1≤j≤n) là P (j). Nói một cách đơn giản, xác suất nhận được “o” trong chuỗi tại lần lượt thứ j là P (j). Bạn cần tính điểm số mong đợi ở cuối vòng của bạn.
Tôi có thể hiểu giải pháp O (n^2) của việc này bằng cách ghi nhớ nhưng câu hỏi yêu cầu giải pháp O (n). Tôi đã thấy giải pháp O (n) nhưng tôi không thể hiểu được nó. Giải pháp O (n) là như sau:
for(i = 1; i <= n; i++)
dp[i] = (dp[i-1] + p[i-1]) * p[i];
for(i = 1; i <= n; i++)
ans+=2 * dp[i] + p[i];
trong đó p [i] là đích xác đạt mục tiêu thứ i. Bất cứ ai có thể giải thích làm thế nào O (n) giải pháp hoạt động?
Giải pháp bạn đã đăng không chính xác.Đó có thể là một phần lý do tại sao bạn gặp khó khăn khi hiểu nó. Chỉ cần chạy một mô phỏng của nó, trung bình kết quả ngẫu nhiên của bạn một vài triệu lần và bạn sẽ thấy nó cho một kết quả khác nhau. – Chill
@Cho giải pháp là chính xác. Đây là liên kết vấn đề [http://www.codechef.com/TCFST13/problems/TCFST05/] và giải pháp mà tôi đưa ra là một trong những giải pháp được chấp nhận – SHB
Phải có điều gì đó sai với mô phỏng của tôi sau đó. Kiểm tra nó ra và cho tôi biết nếu bạn thấy bất kỳ vấn đề. http://pastebin.com/NHWgK1fZ – Chill