trang chủ / đề bài / tn_tst_23_c

Cây khung

Đề bài

Mô tả

Với một đồ thị vô hướng có trọng số và liên thông, ta định nghĩa cây khung của đồ thị là đồ thị con có dạng cây và chứa tất cả các đỉnh của đồ thị. Trọng số của cây khung là tổng trọng số các cạnh thuộc cây. Trong bài toán này chúng ta sẽ xét cách xây dựng đồ thị và tìm cây khung có trọng số nhỏ nhất trên đồ thị được tạo ra.

Cho dãy số nguyên w1,w2,…,wn với số nguyên t, ta xây dựng đồ thị gồm n đỉnh, đỉnh i nối với đỉnh j bằng cạnh vô hướng với trọng số wi×wj+t×(wi+wj). Như vậy mọi cặp đỉnh i≠j đều có đúng một cạnh nối (đồ thị đầy đủ); trọng số cạnh có thể âm. Với n=1, cây khung không có cạnh nào và có trọng số 0.

Yêu cầu: Có q truy vấn tương ứng với q giá trị t, tìm cây khung có trọng số nhỏ nhất tương ứng.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên n,q;
  • Dòng thứ hai gồm n số nguyên w1,w2,…,wn (|wi|≤106);
  • Dòng thứ ba gồm q số nguyên tương ứng với giá trị t của từng truy vấn, các số có giá trị tuyệt đối không vượt quá 106.

Dữ liệu ra

In ra một dòng gồm q số, mỗi số là trọng số của cây khung có trọng số nhỏ nhất tương ứng với từng giá trị t, theo thứ tự trong dữ liệu vào, cách nhau bởi dấu cách.

Ràng buộc

  • 1≤n≤105, 1≤q≤105;
  • |wi|≤106;
  • |t|≤106 với mọi truy vấn.

Subtasks

  • Có 40% số test ứng với 40% số điểm có n≤103; q≤5;
  • Có 30% số test khác ứng với 30% số điểm có n≤105; q≤5;
  • Có 30% số test còn lại ứng với 30% số điểm có n≤105; q≤105.

Ví dụ

Input Output Giải thích
3 2
1 0 -1
0 1
-1 -2 Với t=0: cạnh (1,2) nặng 0, (1,3) nặng −1, (2,3) nặng 0; chọn (1,3) và một cạnh nặng 0, tổng −1. Với t=1: các cạnh nặng 1,−1,−1; chọn hai cạnh −1, tổng −2.
4 3
3 -2 5 -1
-6 0 2
-90 -21 -12 Ví dụ thêm. Với t=−6: nối đỉnh 3 với ba đỉnh còn lại, (1,3) nặng −33, (3,4) nặng −29, (2,3) nặng −28, tổng −90. Với t=0: chọn (2,3) nặng −10, (1,2) nặng −6, (3,4) nặng −5. Với t=2: nối đỉnh 2 với ba đỉnh còn lại, mỗi cạnh nặng −4.

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