Nguồn đề bài: http://vn.spoj.com/problems/NKCABLE/
1. Đề bài NKCABLE Spoj
Các học sinh khi đến thực tập trong phòng máy tính thường hay chơi trò chơi điện tử trên mạng. Để ngăn ngừa, người trực phòng máy đã ngắt tất cả các máy tính ra khỏi mạng và xếp chúng thành một dãy trên một cái bàn dài và gắn chặt máy xuống mặt bàn rồi đánh số thứ tự các máy từ 1 đến N theo chiều từ trái sang phải. Các học sinh tinh nghịch không chịu thua, họ đã quyết định tìm cách nối các máy trên bàn bởi các đoạn dây nối sao cho mỗi máy được nối với ít nhất một máy khác. Để tiến hành công việc này, họ đã đo khoảng cách giữa hai máy liên tiếp. Bạn hãy giúp các học sinh này tìm cách nối mạng thoả mãn yêu cầu đặt ra sao cho tổng độ dài cáp nối phải sử dụng là ít nhất.
Dữ liệu
- Dòng đầu tiên chứa số lượng máy N (1 ≤ N ≤ 25000).
- Dòng thứ i trong số N-1 dòng tiếp theo chứa các khoảng cách từ máy i đến máy i+1 (i=1,2,…,N-1). Giả thiết rằng khoảng cách từ máy 1 đến máy N không vượt quá 106.
Kết quả
Ghi ra độ dài của cáp nối cần sử dụng.
Ví dụ
Input:
6
2
2
3
2
2
Output:
7
2. Gợi ý NKCABLE Spoj
-Các bạn dùng thuật toán QHĐ:
–Cơ sở: —F[1]=A[1], F[2]=A[2], F[3]=F[1]+F[2].
–Công thức truy hồi: —F[i]=Min(F[i-1]+A[i], F[i-2]+A[i])
3. Code Tham Khảo NKCABLE Spoj
uses math; var i,n: longint; f,a: array[1..25000] of longint; begin readln(n); for i:=1 to n do readln(a[i]); f[1]:=0; f[2]:=a[1]; f[3]:=a[1]+a[2]; for i:=4 to n do f[i]:=min(f[i-1]+a[i-1],f[i-2]+a[i-1]); writeln(f[n]); end.
cách làm
Ý bạn là gì ạ?
dạ cho em hỏi ý tưởng để làm bài này là gì ạ
Ở Trên có gợi ý sử dụng QHĐ để giải quyết đó bạn
tiếc vc
ý tưởng 1 đằng code 1 nẻo