Thẻ nhảy

Đề bài

Mô tả

Trên một dải băng vô hạn, các ô được đánh số bởi các số nguyên (âm, không và dương). Ban đầu bạn đứng ở ô 0.

n tấm thẻ. Thẻ thứ i có độ dài li và giá ci. Nếu trả ci đồng, bạn được dùng thẻ thứ i: khi đó từ ô x bất kỳ bạn có thể nhảy tới ô xli hoặc ô x+li.

Bạn muốn mua một tập thẻ sao cho xuất phát từ ô 0, bạn có thể tới được mọi ô của dải băng (được phép đi qua các ô trung gian). Hãy tìm tổng chi phí nhỏ nhất để làm được điều đó, hoặc cho biết điều đó là không thể.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n: số tấm thẻ.
  • Dòng thứ hai chứa n số nguyên l1,l2,,ln: độ dài nhảy của từng thẻ.
  • Dòng thứ ba chứa n số nguyên c1,c2,,cn: giá của từng thẻ.

Dữ liệu ra

In ra một số nguyên duy nhất là tổng chi phí nhỏ nhất. Nếu không thể mua tập thẻ nào thoả mãn, in ra 1.

Ràng buộc

  • 1n300
  • 1li109
  • 1ci105

Ví dụ

Input Output Giải thích
3
100 99 9900
1 1 1
2 Mua một thẻ là không đủ: chẳng hạn chỉ với thẻ độ dài 100 thì mọi ô tới được đều là bội của 100. Mua thẻ 100 và thẻ 99 với tổng giá 2 thì tới được mọi ô.
5
10 20 30 40 50
1 1 1 1 1
-1 Mọi độ dài đều chia hết cho 10 nên dù mua tất cả các thẻ, bạn cũng chỉ tới được các ô là bội của 10.
7
15015 10010 6006 4290 2730 2310 1
1 1 1 1 1 1 10
6 Mua thẻ độ dài 1 tốn 10 đồng. Rẻ hơn là mua cả 6 thẻ đầu tiên với tổng giá 6: khi đó tập độ dài thu được cho phép tới mọi ô.

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