trang chủ / đề bài / mikeshort

Lối tắt của Mike

Đề bài

Mô tả

Thành phố có n giao lộ được đánh số từ 1 đến n. Mike bắt đầu đi bộ từ nhà ở giao lộ số 1.

Đi bộ từ giao lộ i sang giao lộ j tiêu tốn |i−j| đơn vị năng lượng.

Ngoài ra, thành phố có n lối tắt. Lối tắt thứ i cho phép đi từ giao lộ i đến giao lộ ai mà chỉ tốn đúng 1 đơn vị năng lượng (lối tắt chỉ đi được một chiều: từ i đến ai, không đi ngược lại).

Mike đi theo một dãy giao lộ p1=1,p2,…,pk. Với mỗi bước từ pt sang pt+1, chi phí là 1 nếu pt+1=apt (dùng lối tắt), ngược lại là |pt−pt+1|. Tổng năng lượng là tổng chi phí của tất cả các bước.

Với mỗi giao lộ i từ 1 đến n, hãy tìm tổng năng lượng nhỏ nhất để đi từ giao lộ 1 đến giao lộ i.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n — số giao lộ.
  • Dòng thứ hai chứa n số nguyên a1,a2,…,an mô tả các lối tắt.

Dữ liệu ra

In ra n số nguyên m1,m2,…,mn, trong đó mi là tổng năng lượng nhỏ nhất để đi từ giao lộ 1 đến giao lộ i.

Ràng buộc

  • 1≤n≤2·105
  • i≤ai≤n và ai≤ai+1 với mọi i.

Ví dụ

Input Output Giải thích
3
2 2 3
0 1 2 Đến 2: đi 1→2 tốn 1. Đến 3: đi 1→3 tốn |3−1|=2.
7
4 4 4 4 7 7 7
0 1 2 1 2 3 3 Đến 4: dùng lối tắt 1→a1=4 tốn 1. Đến 3: 1→4→3 tốn 1+1=2. Đến 7: 1→4→5→7 (lối tắt a5=7) tốn 1+1+1=3.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0