trang chủ / bài tập / algorace

Đua xe AlgoRace

Đề bài

Mô tả

Có một cuộc đua xe diễn ra ở một đất nước gồm n thành phố, đánh số từ 1 đến n. Giữa hai thành phố phân biệt bất kỳ đều có đúng một con đường hai chiều nối trực tiếp.

Ban tổ chức chuẩn bị m loại xe khác nhau. Mỗi loại xe đi qua mỗi con đường (theo mỗi chiều) trong một khoảng thời gian riêng: loại xe i đi từ thành phố j tới thành phố k mất một thời gian cho trước. Thời gian đi từ j tới k và từ k tới j có thể khác nhau (ma trận thời gian không nhất thiết đối xứng).

Cuộc đua gồm r vòng. Ở vòng thứ i, tay đua xuất phát tại thành phố si và cần về đích tại thành phố ti. Trong một vòng, tay đua được phép đổi xe không quá ki lần. Việc đổi xe có thể thực hiện tại bất kỳ thành phố nào và không tốn thời gian. Một loại xe có thể được dùng nhiều lần, nhưng tổng số lần đổi không vượt quá ki. Tay đua tự do chọn đường đi tới đích.

Với mỗi vòng, hãy tìm thời gian nhỏ nhất để hoàn thành.

Dữ liệu vào

  • Dòng đầu chứa ba số nguyên n, m, r.
  • Tiếp theo là m khối, mỗi khối là một ma trận n×n mô tả một loại xe. Số thứ k trên dòng thứ j của khối thứ i là thời gian loại xe i đi từ thành phố j tới thành phố k. Đường chéo luôn bằng 0.
  • r dòng cuối, mỗi dòng chứa ba số nguyên si, ti, ki: thành phố xuất phát, thành phố đích và số lần đổi xe tối đa của vòng thứ i.

Dữ liệu ra

In ra r dòng, dòng thứ i là thời gian nhỏ nhất để hoàn thành vòng thứ i.

Ràng buộc

  • 2n60
  • 1m60
  • 1r105
  • Mọi thời gian trên đường là số nguyên trong đoạn [0,106].
  • 1si,tin, siti, 0ki1000

Ví dụ

Input Output Giải thích
4 2 3
0 1 5 6
2 0 3 6
1 3 0 1
6 6 7 0
0 3 5 6
2 0 1 6
1 3 0 2
6 6 7 0
1 4 2
1 4 1
1 4 3
3
4
3
Cả ba vòng đều đi từ thành phố 1 → 2 → 3 → 4. Vòng 1 dùng dãy xe (1, 2, 1) nên tốn thời gian 3. Vòng 2 chỉ được đổi 1 lần, dùng dãy (1, 2, 2) tốn 4. Vòng 3 được đổi tới 3 lần nhưng chiến thuật tốt nhất chỉ cần 2 lần đổi như vòng 1, nên vẫn là 3.
4 2 3
0 7 3 3
8 0 10 5
1 1 0 4
8 9 2 0
0 3 3 9
7 0 4 9
3 8 0 4
4 8 9 0
2 3 3
2 1 3
1 2 2
4
5
3
Với số lần đổi xe cho phép, mỗi vòng chọn được chiến thuật kết hợp đường đi và loại xe để đạt thời gian nhỏ nhất tương ứng 4, 5, 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.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0