Chuyến Xe Gringotts

Đề bài

Mô tả

Ngân hàng Gringotts đang vận chuyển vàng từ kho tổng S về căn hầm T tại Hogwarts. Hệ thống hầm mỏ gồm N trạm (đánh số từ 0 đến N1) và M tuyến đường xe kéo một chiều.

Các yêu tinh Gringotts cho phép bạn điều phối xe kéo, nhưng sau đó sẽ phá hoại hệ thống để giữ vàng lại ngân hàng.

Thể thức

Giai đoạn 1 - Đề xuất: Bạn nhận V xe kéo và phải phân bổ chúng vào M tuyến đường, thỏa mãn:

  • Tổng xe đi ra từ S bằng V
  • Tại mỗi trạm trung gian u (uS,uT): tổng xe vào = tổng xe ra (bảo toàn luồng)
  • Số xe trên mỗi tuyến là số nguyên không âm

Giai đoạn 2 - Phá hoại: Yêu tinh chọn tối đa K tuyến đường và phong tỏa hoàn toàn. Chúng sẽ chọn sao cho lượng xe về được T là nhỏ nhất.

Mục tiêu: Phân bổ xe sao cho lượng xe tối đa về được T sau khi bị phá hoại là lớn nhất.

Cài đặt

Bạn cần cài đặt hàm sau:

long long solve(int N, int M, int S, int T, int K, long long V,
                std::vector<int> U, std::vector<int> W);
  • N,M: số trạm và số tuyến đường
  • S,T: trạm nguồn và trạm đích
  • K: số tuyến đường tối đa bị phá
  • V: tổng số xe kéo
  • U,W: tuyến đường thứ i đi từ U[i] đến W[i]

Trong hàm này, bạn phải gọi đúng một lần:

void assign_carts(std::vector<long long> C);

với C là mảng M phần tử, C[i] là số xe phân bổ cho tuyến đường thứ i.

Giá trị trả về của hàm solve không được sử dụng.

Ràng buộc

  • 2N500
  • 1M2000
  • 0K3
  • 1V1018
  • Đồ thị có thể có cạnh song song và/hoặc tự vòng
  • Luôn tồn tại ít nhất một đường đi từ S đến T

Subtasks

Subtask Điểm Ràng buộc
1 15 K=0
2 20 K=1, N,M50
3 30 Đồ thị là lưới ô vuông W×H
4 35 Không có ràng buộc bổ sung

Ví dụ

Input Output Giải thích
N=4, M=4,
S=0, T=3,
K=1, V=100
Tuyến:
(01), (02),
(13), (23)
50 Nếu assign_carts({100, 0, 100, 0)}: yêu tinh phá (01) thì 0 xe về được.
Nếu assign_carts({50, 50, 50, 50}): yêu tinh phá bất kỳ đường nào, vẫn có 50 xe về được. Đây là phương án tối ưu.

2a9a8e9c-6e2f-4044-a9f6-257f470e1481.png

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