trang chủ / đề bài / dhbb23_csl_11_b

Những chiếc rương và chìa khóa

Đề bài

Mô tả

Alice và Bob chơi một trò chơi. Alice có n rương kho báu, rương thứ i chứa ai đồng xu, và m loại chìa khóa. Chìa khóa loại j có thể được bán cho Bob với giá bj đồng xu.

Đầu tiên, Alice đặt các ổ khóa lên những chiếc rương. Có m loại ổ khóa, ổ khóa loại j chỉ có thể được mở bằng chìa khóa loại j. Để đặt một ổ khóa loại j lên rương i, Alice phải trả ci,j USD. Alice có thể đặt bất kỳ số loại khóa khác nhau nào lên mỗi rương (mỗi loại nhiều nhất một ổ trên một rương), kể cả không đặt khóa nào.

Sau đó, Bob mua một tập hợp chìa khóa bất kỳ từ Alice (có thể không mua chìa nào, cũng có thể mua tất cả m loại) và mở tất cả những chiếc rương mà anh có thể mở. Bob có thể mở một chiếc rương nếu sở hữu chìa khóa cho tất cả các ổ khóa trên rương đó; một rương không có ổ khóa nào thì Bob luôn mở được.

Lợi nhuận của Bob bằng tổng số xu trong các rương đã mở trừ tổng số xu dùng để mua chìa khóa. Nếu lợi nhuận của Bob lớn hơn 0 thì Bob thắng; ngược lại (lợi nhuận bằng 0 hoặc âm), Alice thắng.

Yêu cầu: Alice muốn đặt ổ khóa sao cho với mọi cách mua chìa khóa của Bob, lợi nhuận của Bob luôn không dương. Hãy xác định Alice có thể làm được điều đó hay không, và nếu có thì tổng số USD nhỏ nhất Alice cần dùng để đặt ổ khóa là bao nhiêu.

Dữ liệu vào

  • Dòng đầu tiên chứa hai số nguyên n,m (1≤n,m≤6), lần lượt là số rương kho báu và số loại chìa khóa.
  • Dòng thứ hai chứa n số nguyên a1,a2,…,an (1≤ai≤4), là số xu trong các rương.
  • Dòng thứ ba chứa m số nguyên b1,b2,…,bm (1≤bj≤4), là giá bán các loại chìa khóa.
  • n dòng tiếp theo, mỗi dòng chứa m số nguyên. Số thứ j của dòng thứ i là ci,j (1≤ci,j≤107), chi phí đặt ổ khóa loại j lên rương i.

Dữ liệu ra

Nếu Alice không thể đảm bảo chiến thắng (dù đặt ổ khóa thế nào, Bob luôn có cách mua chìa khóa để thu được lợi nhuận dương) thì in ra −1. Ngược lại, in ra số USD nhỏ nhất Alice cần dùng để đặt ổ khóa sao cho Bob không thể thu được lợi nhuận dương.

Ràng buộc

  • 1≤n,m≤6.
  • 1≤ai≤4, 1≤bj≤4.
  • 1≤ci,j≤107.

Subtasks

  • Subtask 1 (20% số điểm): n,m,ai,bj≤2; ci,j≤103.
  • Subtask 2 (30% số điểm): n,m,ai,bj≤4; ci,j≤105.
  • Subtask 3 (50% số điểm): không có ràng buộc gì thêm.

Ví dụ

Input Output Giải thích
2 3
3 3
1 1 4
10 20 100
20 15 80
205 Alice đặt ổ khóa loại 1 và 3 lên rương 1 (10+100=110 USD), ổ khóa loại 2 và 3 lên rương 2 (15+80=95 USD). Mua chìa {1,3} hoặc {2,3} chỉ mở được một rương (3−5<0); mua cả ba chìa thì lợi nhuận 6−6=0.
2 3
3 4
1 1 4
10 20 100
20 15 80
-1 Dù Alice đặt ổ khóa thế nào, Bob mua cả ba chìa với giá 6 đồng xu và mở được cả hai rương với 7 đồng xu, lợi nhuận 1>0.
1 1
2
2
5
5 Ví dụ bổ sung. Nếu không khóa, Bob mở rương miễn phí và lời 2. Đặt ổ khóa loại 1 thì Bob mua chìa được lợi nhuận 2−2=0, không lớn hơn 0 nên Alice thắng.

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