Nối mạng

Xem dạng PDF

Gửi bài giải


Điểm: 0,07 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 512M
Input: stdin
Output: stdout

Nguồn bài:
VNOI Marathon '08 - Practice Round
Dạng bài
Ngôn ngữ cho phép
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch

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.

Input

  • Dòng đầu tiên chứa số lượng máy ~N~ ~(1 \leq N \leq 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á ~10^{6}~.

Output

Ghi ra độ dài của cáp nối cần sử dụng.

Sample Input

6
2
2
3
2
2

Sample Output

7

Bình luận

Hãy đọc nội quy trước khi bình luận.



  • 2
    ijk  đã bình luận lúc 31, Tháng 12, 2024, 9:23 sửa 3

    Sol mang tính chất tham khảo

    Gọi ~dp[i][j]~ là chi phí tối ưu nhất khi xét đến khoảng cách thứ ~i~ (~i=1...N, j=0...1~)

    Phát biểu lại bài toán: Chọn các khoảng cách sao cho tối ưu nhất và không có hai khoảng cách liên tiếp nào không được chọn

    Vì luôn phải chọn khoảng cách ~a[1]~ và ~a[n-1]~ nên ~dp[1][j]=a[1]~ và đáp án là ~a[n-1]+min(dp[n-2][j])~

    Xét khoảng cách ~i=2...n-2~:

    Nếu không chọn ~i~: ~dp[i][0]=dp[i-1][1]~

    Nếu chọn ~i~: ~dp[i][1]=min(dp[i-1][j])+a[i]~


  • 0
    minzdapoet1102  đã bình luận lúc 21, Tháng 8, 2024, 5:49

    Xin nhờ mọi người cho mình một chút gợi ý ạ!


  • 0
    Hiiragi_Sergan  đã bình luận lúc 18, Tháng 9, 2023, 11:05

    cần người giải thích input :(


    • 19
      catlover  đã bình luận lúc 26, Tháng 10, 2023, 12:49

      Test ví dụ dùng 3 đoạn cáp:

      • Nối máy 1 và 2 dùng đoạn độ dài 2
      • Nối máy 3 và 4 dùng đoạn độ dài 3
      • Nối máy 5 và 6 dùng đoạn độ dài 2

      • 1
        minhtrivy09  đã bình luận lúc 22, Tháng 7, 2024, 19:33 chỉnh sửa

        test ví dụ có 5 máy thôi mà bn? //e hiểu nhầm đề ạ e xin lỗi :)


      • -5
        Quangdpm  đã bình luận lúc 24, Tháng 12, 2023, 2:31

        Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.


        • -4
          khoatri  đã bình luận lúc 24, Tháng 12, 2023, 11:46

          N1993R


  • -62
    thanh20092007  đã bình luận lúc 31, Tháng 5, 2023, 3:09 sửa 2

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.


  • -5
    Kiet76254  đã bình luận lúc 3, Tháng 2, 2023, 9:29

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.


  • -1
    kirito6725  đã bình luận lúc 24, Tháng 8, 2022, 9:52

    mấy bài này hay thật