JOI 2024 - Vòng loại 2

Bộ đề bài

# Bài tập Điểm Thời gian: Giới hạn bộ nhớ
1 JOI 2024 - Card Game 2 100 (p) 2.0s 1G
2 JOI 2024 - Shopping 2 100 (p) 2.0s 1G
3 JOI 2024 - White Light 2 100 (p) 1.0s 1G
4 JOI 2024 - Garden 2 100 (p) 4.0s 1G
5 JOI 2024 - Highway Tolls 100 (p) 4.0s 1G

1. JOI 2024 - Card Game 2

Điểm: 100 (p) Thời gian: 2.0s Bộ nhớ: 1G Input: bàn phím Output: màn hình

Bitaro có \(N\) lá bài. Trên lá bài thứ \(i\) (\(1 \le i \le N\)) có ghi số nguyên \(A_i\). Bitaro muốn chọn ba lá bài sao cho các số ghi trên chúng cách nhau \(3\) đơn vị. Chính xác hơn, ba số được chọn phải có dạng \(x, x+3, x+6\) với một số nguyên \(x\) nào đó.

Chẳng hạn, nếu Bitaro có năm lá bài ghi các số \(2, 4, 5, 7, 10\), thì chọn các lá bài ghi \(4, 7, 10\) sẽ thỏa mãn điều kiện.

Cho thông tin về các lá bài của Bitaro, hãy viết chương trình xác định có thể chọn ba lá bài thỏa mãn điều kiện trên hay không.

Dữ liệu vào

Dòng thứ nhất chứa số nguyên \(N\).

Dòng thứ hai chứa \(N\) số nguyên \(A_1, A_2, \ldots, A_N\), cách nhau bởi dấu cách.

Dữ liệu ra

Nếu có thể chọn ba lá bài thỏa mãn điều kiện, in ra Yes; ngược lại, in ra No.

Ràng buộc

  • \(3 \le N \le 200\,000\).
  • \(1 \le A_i \le 200\,000\) với mọi \(1 \le i \le N\).
  • Tất cả các giá trị đầu vào đều là số nguyên.

Phân nhóm

Mọi phân nhóm đều thỏa mãn các ràng buộc chung ở trên.

  1. (20 điểm) \(N = 3\).
  2. (20 điểm) \(A_i \le 7\) với mọi \(1 \le i \le N\).
  3. (30 điểm) \(N \le 100\).
  4. (30 điểm) Không có ràng buộc bổ sung.

Ví dụ

Ví dụ 1

Input
3
2 5 8
Output
Yes
Giải thích

Chọn các lá bài ghi \(2, 5, 8\) thì thỏa mãn điều kiện. Vì vậy, in ra Yes.

Ví dụ này thỏa mãn các ràng buộc của các phân nhóm \(1, 3, 4\).

Ví dụ 2

Input
4
1 4 6 4
Output
No
Giải thích

Không thể chọn các lá bài thỏa mãn điều kiện. Vì vậy, in ra No.

Ví dụ này thỏa mãn các ràng buộc của các phân nhóm \(2, 3, 4\).

Ví dụ 3

Input
8
9 8 11 1 1 6 10 4
Output
No
Giải thích

Không thể chọn các lá bài thỏa mãn điều kiện. Vì vậy, in ra No.

Ví dụ này thỏa mãn các ràng buộc của các phân nhóm \(3, 4\).

Ví dụ 4

Input
20
2 15 4 30 6 8 11 27 14 3 16 26 19 2 23 21 18 13 28 6
Output
Yes
Giải thích

Chọn các lá bài ghi \(15, 18, 21\) thì thỏa mãn điều kiện. Vì vậy, in ra Yes.

Ví dụ này thỏa mãn các ràng buộc của các phân nhóm \(3, 4\).

Nguồn

Bản dịch tiếng Việt từ đề gốc tiếng Nhật của Ủy ban Olympic Tin học Nhật Bản. Đề gốc và bản dịch được cung cấp theo giấy phép CC BY-SA 4.0.

2. JOI 2024 - Shopping 2

Điểm: 100 (p) Thời gian: 2.0s Bộ nhớ: 1G Input: bàn phím Output: màn hình

Cửa hàng JOI có \(N\) mặt hàng, được đánh số từ \(1\) đến \(N\). Mỗi mặt hàng có một giá niêm yết và một loại. Mặt hàng \(i\) (\(1 \le i \le N\)) có giá niêm yết \(P_i\) yên và thuộc loại \(A_i\). Các loại được biểu diễn bằng các số nguyên từ \(1\) đến \(M\).

Cửa hàng JOI tổ chức một đợt giảm giá kéo dài \(M\) ngày. Vào ngày thứ \(j\) (\(1 \le j \le M\)), mọi mặt hàng thuộc loại \(j\) đều được bán với giá bằng một nửa giá niêm yết.

Trong đợt giảm giá, có \(Q\) khách hàng đến cửa hàng, được đánh số từ \(1\) đến \(Q\). Khách hàng \(k\) (\(1 \le k \le Q\)) đến vào ngày thứ \(T_k\) và mua mỗi mặt hàng \(L_k, L_k+1, \ldots, R_k\) một đơn vị.

Để đánh giá hiệu quả của đợt giảm giá, cửa hàng muốn biết số tiền mỗi khách hàng đã chi. Cho thông tin về các mặt hàng và khách hàng, hãy viết chương trình tính số tiền mỗi khách hàng phải trả.

Dữ liệu vào

Dòng thứ nhất chứa ba số nguyên \(N, M, Q\).

Trong \(N\) dòng tiếp theo, dòng thứ \(i\) chứa hai số nguyên \(P_i, A_i\).

Trong \(Q\) dòng tiếp theo, dòng thứ \(k\) chứa ba số nguyên \(T_k, L_k, R_k\). Các giá trị trên cùng một dòng được cách nhau bởi dấu cách.

Dữ liệu ra

In ra \(Q\) dòng. Dòng thứ \(k\) (\(1 \le k \le Q\)) chứa số tiền khách hàng \(k\) phải trả, không kèm đơn vị yên.

Ràng buộc

  • \(1 \le N \le 200\,000\).
  • \(1 \le M \le 200\,000\).
  • \(1 \le Q \le 200\,000\).
  • \(2 \le P_i \le 10^9\) với mọi \(1 \le i \le N\).
  • \(P_i\) là số chẵn với mọi \(1 \le i \le N\).
  • \(1 \le A_i \le M\) với mọi \(1 \le i \le N\).
  • \(1 \le T_k \le M\) với mọi \(1 \le k \le Q\).
  • \(1 \le L_k \le R_k \le N\) với mọi \(1 \le k \le Q\).
  • Tất cả các giá trị đầu vào đều là số nguyên.

Phân nhóm

Mọi phân nhóm đều thỏa mãn các ràng buộc chung ở trên.

  1. (15 điểm) \(N \le 2000\), \(M \le 2000\), \(Q \le 2000\).
  2. (20 điểm) \(M = 1\).
  3. (12 điểm) \(M \le 10\).
  4. (14 điểm) \(A_i \ne A_j\) với mọi \(1 \le i < j \le N\).
  5. (22 điểm) \(P_i = 2\) với mọi \(1 \le i \le N\).
  6. (17 điểm) Không có ràng buộc bổ sung.

Ví dụ

Ví dụ 1

Input
5 1 3
10 1
40 1
30 1
20 1
50 1
1 2 4
1 3 5
1 1 5
Output
45
50
75
Giải thích

Khách hàng \(1\) phải trả \(40 \div 2 + 30 \div 2 + 20 \div 2 = 45\) yên, nên dòng thứ nhất in ra \(45\).

Khách hàng \(2\) phải trả \(30 \div 2 + 20 \div 2 + 50 \div 2 = 50\) yên, nên dòng thứ hai in ra \(50\).

Khách hàng \(3\) phải trả \(10 \div 2 + 40 \div 2 + 30 \div 2 + 20 \div 2 + 50 \div 2 = 75\) yên, nên dòng thứ ba in ra \(75\).

Ví dụ này thỏa mãn các ràng buộc của các phân nhóm \(1, 2, 3, 6\).

Ví dụ 2

Input
5 3 3
10 1
40 3
30 2
20 1
50 3
1 2 4
3 3 5
2 1 5
Output
80
75
135
Giải thích

Khách hàng \(1\) phải trả \(40 + 30 + 20 \div 2 = 80\) yên, nên dòng thứ nhất in ra \(80\).

Khách hàng \(2\) phải trả \(30 + 20 + 50 \div 2 = 75\) yên, nên dòng thứ hai in ra \(75\).

Khách hàng \(3\) phải trả \(10 + 40 + 30 \div 2 + 20 + 50 = 135\) yên, nên dòng thứ ba in ra \(135\).

Ví dụ này thỏa mãn các ràng buộc của các phân nhóm \(1, 3, 6\).

Ví dụ 3

Input
5 5 3
50 2
70 4
20 5
30 1
10 3
4 2 4
5 1 5
2 3 4
Output
85
170
50
Giải thích

Ví dụ này thỏa mãn các ràng buộc của các phân nhóm \(1, 3, 4, 6\).

Ví dụ 4

Input
10 5 4
2 1
2 5
2 4
2 3
2 4
2 2
2 2
2 4
2 2
2 1
3 2 7
1 1 7
2 1 10
5 5 8
Output
11
13
17
8
Giải thích

Ví dụ này thỏa mãn các ràng buộc của các phân nhóm \(1, 3, 5, 6\).

Ví dụ 5

Input
10 10 10
741703628 7
231838922 5
920286164 3
763741914 5
246151406 7
54109256 1
966457488 5
441379880 10
458514202 2
224373612 1
5 5 10
2 2 7
1 9 9
1 3 4
9 4 6
1 1 7
9 4 7
4 8 8
7 5 9
1 4 5
Output
1907757100
3182585150
458514202
1684028078
1064002576
3897234150
2030460064
441379880
2043536529
1009893320
Giải thích

Ví dụ này thỏa mãn các ràng buộc của các phân nhóm \(1, 3, 6\).

Nguồn

Bản dịch tiếng Việt từ đề gốc tiếng Nhật của Ủy ban Olympic Tin học Nhật Bản. Đề gốc và bản dịch được cung cấp theo giấy phép CC BY-SA 4.0.

3. JOI 2024 - White Light 2

Điểm: 100 (p) Thời gian: 1.0s Bộ nhớ: 1G Input: bàn phím Output: màn hình

\(N\) bóng đèn xếp thành một hàng ngang, được đánh số từ \(1\) đến \(N\) từ trái sang phải. Mỗi bóng đèn có màu đỏ, xanh lá hoặc xanh dương. Màu của các bóng đèn được biểu diễn bằng xâu \(S\): bóng đèn \(i\) (\(1 \le i \le N\)) có màu đỏ nếu ký tự thứ \(i\) của \(S\)R, màu xanh lá nếu là G, và màu xanh dương nếu là B. Ban đầu, tất cả các bóng đèn đều sáng.

Khi vẫn còn ít nhất một bóng đèn sáng, JOI có thể thực hiện ba loại thao tác sau theo thứ tự tùy ý và với số lần tùy ý. JOI cũng có thể không thực hiện thao tác nào.

  • Trả \(A\) yên để tắt bóng đèn ngoài cùng bên trái trong số các bóng đèn đang sáng.
  • Trả \(B\) yên để tắt bóng đèn ngoài cùng bên phải trong số các bóng đèn đang sáng.
  • Trả \(C\) yên để chọn một bóng đèn đang sáng và đổi nó sang màu tùy ý.

JOI muốn khi nhìn hàng đèn từ xa, chúng trông có màu trắng đẹp mắt. Để làm được điều đó, dãy màu của các bóng đèn còn sáng, xét từ trái sang phải, phải là các lần lặp trọn vẹn của RGB (đỏ, xanh lá, xanh dương), có dạng RGBRGB...RGB. Nếu không còn bóng đèn nào sáng thì cũng được xem là một dãy lặp của RGB. Lưu ý rằng các dãy như GBRGBR hoặc RGBRG không thỏa mãn điều kiện.

Cho thông tin về hàng đèn và chi phí các thao tác, hãy viết chương trình tìm số tiền ít nhất cần trả để dãy màu của các bóng đèn còn sáng là một dãy lặp của RGB.

Dữ liệu vào

Dòng thứ nhất chứa số nguyên \(N\).

Dòng thứ hai chứa xâu \(S\).

Dòng thứ ba chứa ba số nguyên \(A, B, C\), cách nhau bởi dấu cách.

Dữ liệu ra

In ra trên một dòng số tiền ít nhất cần trả để dãy màu của các bóng đèn còn sáng là một dãy lặp của RGB, không kèm đơn vị yên.

Ràng buộc

  • \(1 \le N \le 200\,000\).
  • \(S\) là xâu có độ dài \(N\).
  • Mỗi ký tự của \(S\)R, G hoặc B.
  • \(1 \le A \le 10^9\).
  • \(1 \le B \le 10^9\).
  • \(1 \le C \le 10^9\).
  • \(N, A, B, C\) là các số nguyên.

Phân nhóm

Mọi phân nhóm đều thỏa mãn các ràng buộc chung ở trên.

  1. (4 điểm) \(N = 3\).
  2. (22 điểm) \(N \le 300\).
  3. (19 điểm) \(N \le 10\,000\).
  4. (9 điểm) \(N\) chia hết cho \(3\), \(A = 10^9\), \(B = 10^9\), \(C = 1\).
  5. (10 điểm) \(A = 10^9\), \(B = 10^9\), \(C = 1\).
  6. (36 điểm) Không có ràng buộc bổ sung.

Ví dụ

Ví dụ 1

Input
6
GRBBRG
3 4 5
Output
16
Giải thích

Chẳng hạn, có thể thực hiện bốn thao tác sau để dãy màu của các bóng đèn còn sáng là một dãy lặp của RGB. Ký hiệu - biểu diễn một bóng đèn đã tắt.

  1. Trả \(3\) yên để tắt bóng đèn \(1\), là bóng ngoài cùng bên trái đang sáng. Trạng thái hàng đèn trở thành -RBBRG.
  2. Trả \(4\) yên để tắt bóng đèn \(6\), là bóng ngoài cùng bên phải đang sáng. Trạng thái hàng đèn trở thành -RBBR-.
  3. Trả \(4\) yên để tắt bóng đèn \(5\), là bóng ngoài cùng bên phải đang sáng. Trạng thái hàng đèn trở thành -RBB--.
  4. Trả \(5\) yên để đổi bóng đèn \(3\) sang màu xanh lá. Trạng thái hàng đèn trở thành -RGB--.

Không thể đạt được yêu cầu với chi phí nhỏ hơn \(16\) yên, nên in ra \(16\).

Ví dụ này thỏa mãn các ràng buộc của các phân nhóm \(2, 3, 6\).

Ví dụ 2

Input
3
BRG
1000000000 1000000000 1
Output
3
Giải thích

Chẳng hạn, có thể thực hiện ba thao tác sau để dãy màu của các bóng đèn còn sáng là một dãy lặp của RGB. Ký hiệu - biểu diễn một bóng đèn đã tắt.

  1. Trả \(1\) yên để đổi bóng đèn \(2\) sang màu xanh lá. Trạng thái hàng đèn trở thành BGG.
  2. Trả \(1\) yên để đổi bóng đèn \(3\) sang màu xanh dương. Trạng thái hàng đèn trở thành BGB.
  3. Trả \(1\) yên để đổi bóng đèn \(1\) sang màu đỏ. Trạng thái hàng đèn trở thành RGB.

Không thể đạt được yêu cầu với chi phí nhỏ hơn \(3\) yên, nên in ra \(3\).

Ví dụ này thỏa mãn các ràng buộc của các phân nhóm \(1, 2, 3, 4, 5, 6\).

Ví dụ 3

Input
3
GRB
9 11 14
Output
27
Giải thích

Chẳng hạn, có thể thực hiện ba thao tác sau để dãy màu của các bóng đèn còn sáng là một dãy lặp của RGB. Ký hiệu - biểu diễn một bóng đèn đã tắt.

  1. Trả \(9\) yên để tắt bóng đèn \(1\), là bóng ngoài cùng bên trái đang sáng. Trạng thái hàng đèn trở thành -RB.
  2. Trả \(9\) yên để tắt bóng đèn \(2\), là bóng ngoài cùng bên trái đang sáng. Trạng thái hàng đèn trở thành --B.
  3. Trả \(9\) yên để tắt bóng đèn \(3\), là bóng ngoài cùng bên trái đang sáng. Trạng thái hàng đèn trở thành ---.

Không thể đạt được yêu cầu với chi phí nhỏ hơn \(27\) yên, nên in ra \(27\). Lưu ý rằng trường hợp không còn bóng đèn nào sáng cũng thỏa mãn điều kiện.

Ví dụ này thỏa mãn các ràng buộc của các phân nhóm \(1, 2, 3, 6\).

Ví dụ 4

Input
9
RGBRGBRGB
1000000000 1000000000 1
Output
0
Giải thích

Dãy màu của hàng đèn đã là một dãy lặp của RGB, nên in ra \(0\).

Ví dụ này thỏa mãn các ràng buộc của các phân nhóm \(2, 3, 4, 5, 6\).

Ví dụ 5

Input
20
BRGBRGBBGBBBGRRBBBRB
1000000000 1000000000 1
Output
2000000008
Giải thích

Ví dụ này thỏa mãn các ràng buộc của các phân nhóm \(2, 3, 5, 6\).

Ví dụ 6

Input
23
BBGRGBBBBBBGRRGGGGBGGGG
786820955 792349124 710671229
Output
10107224827
Giải thích

Ví dụ này thỏa mãn các ràng buộc của các phân nhóm \(2, 3, 6\).

Nguồn

Bản dịch tiếng Việt từ đề gốc tiếng Nhật của Ủy ban Olympic Tin học Nhật Bản. Đề gốc và bản dịch được cung cấp theo giấy phép CC BY-SA 4.0.

4. JOI 2024 - Garden 2

Điểm: 100 (p) Thời gian: 4.0s Bộ nhớ: 1G Input: bàn phím Output: màn hình

Vườn JOI có dạng hình vuông, được chia thành \(N\) hàng và \(N\) cột ô vuông. Ô ở hàng thứ \(i\) từ trên xuống và cột thứ \(j\) từ trái sang được gọi là ô \((i,j)\) (\(1 \le i,j \le N\)).

Đất trong vườn không tốt lắm, nên mỗi ô chỉ có thể trồng tối đa một bông hoa thuộc một màu nhất định. Cụ thể, ô \((i,j)\) chỉ có thể trồng hoa đỏ nếu \(A_{i,j}\)R, hoa vàng nếu là Y, và hoa xanh dương nếu là B.

Để khu vườn đẹp hơn khi chụp ảnh từ trên không, ông K, người quản lý khu vườn, dự định trồng hoa theo quy trình sau:

  1. Chọn số nguyên \(r\) biểu diễn kích thước, thỏa mãn \(0 \le r \le (N-1)/2\).
  2. Chọn ô trung tâm \((x,y)\), thỏa mãn \(r+1 \le x \le N-r\)\(r+1 \le y \le N-r\).
  3. Với mỗi \(d\) từ \(0\) đến \(r\), chọn màu \(c_d\) là đỏ, vàng hoặc xanh dương.
  4. Với mỗi ô \((x',y')\), đặt \(d = |x'-x| + |y'-y|\), trong đó \(|t|\) là giá trị tuyệt đối của \(t\). Nếu \(d \le r\), trồng một bông hoa màu \(c_d\) tại ô đó; nếu \(d > r\), không trồng hoa tại ô đó.

Việc trồng hoa phải phù hợp với màu hoa mà từng ô cho phép. Cho kích thước khu vườn và màu hoa có thể trồng ở mỗi ô, hãy viết chương trình tìm số bông hoa nhiều nhất mà ông K có thể trồng.

Dữ liệu vào

Dòng thứ nhất chứa số nguyên \(N\).

Trong \(N\) dòng tiếp theo, dòng thứ \(i\) chứa xâu gồm \(N\) ký tự \(A_{i,1}A_{i,2}\ldots A_{i,N}\), không có dấu cách giữa các ký tự.

Dữ liệu ra

In ra trên một dòng số bông hoa nhiều nhất mà ông K có thể trồng.

Ràng buộc

  • \(3 \le N \le 3500\).
  • \(A_{i,j}\)R, Y hoặc B với mọi \(1 \le i \le N\), \(1 \le j \le N\).
  • \(N\) là số nguyên.

Phân nhóm

Mọi phân nhóm đều thỏa mãn các ràng buộc chung ở trên.

  1. (4 điểm) \(N = 3\).
  2. (13 điểm) \(N \le 50\).
  3. (17 điểm) \(N \le 800\).
  4. (14 điểm) Có không quá \(5\) ô \((i,j)\) với \(1 \le i \le N\), \(1 \le j \le N\)\(A_{i,j}\) khác R.
  5. (16 điểm) Với mọi \(1 \le i \le N-1\), \(1 \le j \le N-1\), có ít nhất \(3\) giá trị bằng R trong bốn giá trị \(A_{i,j}\), \(A_{i,j+1}\), \(A_{i+1,j}\), \(A_{i+1,j+1}\).
  6. (36 điểm) Không có ràng buộc bổ sung.

Ví dụ

Ví dụ 1

Input
3
RYR
YBY
BYY
Output
5
Giải thích

Chọn \(r=1\), \((x,y)=(2,2)\), \(c_0\) là xanh dương và \(c_1\) là vàng thì có thể trồng \(5\) bông hoa như hình dưới đây. Màu nền của mỗi ô biểu diễn màu hoa có thể trồng tại ô đó. Trong hình, chỉ hoa vàng và chỉ hoa xanh dương.

Không có cách trồng từ \(6\) bông hoa trở lên, nên in ra \(5\).

Ví dụ này thỏa mãn các ràng buộc của các phân nhóm \(1, 2, 3, 6\).

Ví dụ 2

Input
9
YYRYBBBYR
BYYRRBYBB
RBRRBRBBY
RYRBRYRBR
YYBRYYYRB
RRYBRYRBR
RBYRBRBRB
BRYYRBBBR
RBBBYBRRY
Output
25
Giải thích

Chọn \(r=3\), \((x,y)=(5,6)\), \(c_0\)\(c_1\) là vàng, \(c_2\) là đỏ, \(c_3\) là xanh dương thì có thể trồng \(25\) bông hoa như hình dưới đây. Màu nền của mỗi ô biểu diễn màu hoa có thể trồng tại ô đó. Trong hình, chỉ hoa đỏ, chỉ hoa vàng và chỉ hoa xanh dương.

Không có cách trồng từ \(26\) bông hoa trở lên, nên in ra \(25\).

Ví dụ này thỏa mãn các ràng buộc của các phân nhóm \(2, 3, 6\).

Ví dụ 3

Input
6
RBYRBY
BYRBYR
YRBYRB
RBYRBY
BYRBYR
YRBYRB
Output
1
Giải thích

Ví dụ này thỏa mãn các ràng buộc của các phân nhóm \(2, 3, 6\).

Ví dụ 4

Input
20
RRRRRRRRRRRRRRRRRRRR
RRRRRRRRRRRRRRRRRRRR
RRRRBRRRRRRRRRRRRYRR
RRRRRRRRRRRRRRRRRRRR
RRRRRRRRRRRRRRRRRRRR
RRRRRRRRRRRRRRRRRRRR
RRRRRRRRRRRYRRRRRRRR
RRRRRRRRRRRRRRRRRRRR
RRRRRRRRRRRRRRRRRRRR
RRRRRRRRRRRRRRRRRRRR
RRRRRRRRRRRRRRRRRRRR
RRRRRYRRRRRRRRRRRRRR
RRRRRRRRRRRRRRRRRRRR
RRRRRRRRRRRRRRRRRRRR
RRRRRRRRRRRRRRRRRRBR
RRRRRRRRRRRRRRRRRRRR
RRRRRRRRRRRRRRRRRRRR
RRRRRRRRRRRRRRRRRRRR
RRRRRRRRRRRRRRRRRRRR
RRRRRRRRRRRRRRRRRRRR
Output
85
Giải thích

Ví dụ này thỏa mãn các ràng buộc của các phân nhóm \(2, 3, 4, 5, 6\).

Ví dụ 5

Input
10
RRRRRRRRRR
RYRRRRRRRR
RRRRYRRRRR
RBRRRRRRRR
RRRRRRRRYR
RBRRRRRRRR
RRRRBRRRRR
RBRRRRRRRR
RRRRRRRRYR
RRRRRRRRRR
Output
25
Giải thích

Ví dụ này thỏa mãn các ràng buộc của các phân nhóm \(2, 3, 5, 6\).

Nguồn

Bản dịch tiếng Việt từ đề gốc tiếng Nhật của Ủy ban Olympic Tin học Nhật Bản. Đề gốc và bản dịch được cung cấp theo giấy phép CC BY-SA 4.0.

5. JOI 2024 - Highway Tolls

Điểm: 100 (p) Thời gian: 4.0s Bộ nhớ: 1G Input: bàn phím Output: màn hình

Vương quốc JOI có \(N\) thành phố, được đánh số từ \(1\) đến \(N\). Có \(M\) đường cao tốc một chiều nối các thành phố, được đánh số từ \(1\) đến \(M\). Đi qua đường cao tốc \(i\) (\(1 \le i \le M\)) cho phép di chuyển từ thành phố \(A_i\) đến thành phố \(B_i\) và mất \(L_i\) đơn vị thời gian.

Mỗi lần đi qua một đường cao tốc, bạn phải trả phí. Phí thấp nhất của đường cao tốc \(i\)\(C_i\). Tuy nhiên, mọi người lao động ở vương quốc JOI đều không thích làm việc ngoài giờ, nên càng cách xa thời điểm chuẩn \(0\), phí càng tăng. Cụ thể, nếu rời thành phố \(A_i\) vào thời điểm \(t\) để đi qua đường cao tốc \(i\), bạn phải trả phí \(C_i + K \times |t|\), trong đó \(K\) là một hằng số và \(|t|\) là giá trị tuyệt đối của \(t\).

Bạn sống ở thành phố \(1\) và muốn đến thăm người bạn sống ở thành phố \(N\). Trước hết, bạn muốn biết có thể đi từ thành phố \(1\) đến thành phố \(N\) bằng các đường cao tốc hay không. Nếu có, bạn muốn tìm tổng phí ít nhất phải trả. Bạn được tự do chọn lộ trình và thời điểm rời mỗi thành phố. Đặc biệt, bạn có thể rời thành phố \(1\) tại một thời điểm âm, hoặc ở lại một thành phố trong một khoảng thời gian mà không đi qua đường cao tốc nào.

Cho thông tin về các đường cao tốc và hằng số \(K\), hãy viết chương trình xác định có thể đi từ thành phố \(1\) đến thành phố \(N\) hay không và, nếu có, tìm tổng phí ít nhất phải trả.

Có thể chứng minh rằng, với các ràng buộc của bài toán, nếu tồn tại cách di chuyển thì tổng phí nhỏ nhất luôn là một số nguyên.

Dữ liệu vào

Dòng thứ nhất chứa ba số nguyên \(N, M, K\).

Trong \(M\) dòng tiếp theo, dòng thứ \(i\) chứa bốn số nguyên \(A_i, B_i, L_i, C_i\), cách nhau bởi dấu cách.

Dữ liệu ra

Nếu không thể đi từ thành phố \(1\) đến thành phố \(N\) bằng các đường cao tốc, in ra -1. Ngược lại, in ra trên một dòng số nguyên biểu diễn tổng phí ít nhất phải trả.

Ràng buộc

  • \(2 \le N \le 4000\).
  • \(1 \le M \le 8000\).
  • \(0 \le K \le 100\,000\).
  • \(1 \le A_i \le N\) với mọi \(1 \le i \le M\).
  • \(1 \le B_i \le N\) với mọi \(1 \le i \le M\).
  • \(A_i \ne B_i\) với mọi \(1 \le i \le M\).
  • \(1 \le L_i \le 1\,000\,000\) với mọi \(1 \le i \le M\).
  • \(0 \le C_i \le 10^9\) với mọi \(1 \le i \le M\).
  • Tất cả các giá trị đầu vào đều là số nguyên.

Phân nhóm

Mọi phân nhóm đều thỏa mãn các ràng buộc chung ở trên.

  1. (9 điểm) \(N \le 100\), \(M \le 200\), \(K = 0\).
  2. (21 điểm) \(N \le 100\), \(M \le 200\), \(L_i \le 20\) với mọi \(1 \le i \le M\).
  3. (13 điểm) \(N \le 100\), \(M=N-1\), \(A_i=i\)\(B_i=i+1\) với mọi \(1 \le i \le M\).
  4. (23 điểm) \(N \le 100\), \(M \le 200\), \(N\) là số chẵn và \(\lfloor B_i/2 \rfloor - \lfloor A_i/2 \rfloor = 1\) với mọi \(1 \le i \le M\). Ở đây, \(\lfloor x \rfloor\) là số nguyên lớn nhất không vượt quá \(x\).
  5. (16 điểm) \(N \le 100\), \(M \le 200\).
  6. (11 điểm) \(N \le 1500\), \(M \le 3000\).
  7. (7 điểm) Không có ràng buộc bổ sung.

Ví dụ

Ví dụ 1

Input
4 4 2
1 2 3 2
1 3 1 10
2 3 1 4
3 4 5 3
Output
15
Giải thích

Các thành phố và đường cao tốc được biểu diễn như hình dưới đây. Mỗi hình tròn là một thành phố, số bên trong là số hiệu thành phố; mỗi mũi tên là một đường cao tốc. Hai số ghi cạnh mỗi đường lần lượt là \(L_i\)\(C_i\).

Có thể di chuyển như sau để tổng phí bằng \(15\):

  • Thời điểm \(-1\): rời thành phố \(1\) để đến thành phố \(3\). Phí là \(10 + 2 \times |-1| = 12\).
  • Thời điểm \(0\): đến thành phố \(3\) và lập tức đi tiếp đến thành phố \(4\). Phí là \(3 + 2 \times |0| = 3\).
  • Thời điểm \(5\): đến thành phố \(4\).

Không có cách di chuyển nào có tổng phí nhỏ hơn \(15\), nên in ra \(15\).

Ví dụ này thỏa mãn các ràng buộc của các phân nhóm \(2, 5, 6, 7\).

Ví dụ 2

Input
4 4 0
1 2 3 2
1 3 1 10
2 3 1 4
3 4 5 3
Output
9
Giải thích

Ví dụ này chỉ khác ví dụ \(1\) ở giá trị của \(K\). Có thể di chuyển như sau để tổng phí bằng \(9\):

  • Thời điểm \(-3\): rời thành phố \(1\) để đến thành phố \(2\). Phí là \(2 + 0 \times |-3| = 2\).
  • Thời điểm \(0\): đến thành phố \(2\) và lập tức đi tiếp đến thành phố \(3\). Phí là \(4 + 0 \times |0| = 4\).
  • Thời điểm \(1\): đến thành phố \(3\) và ở lại đó.
  • Thời điểm \(3\): rời thành phố \(3\) để đến thành phố \(4\). Phí là \(3 + 0 \times |3| = 3\).
  • Thời điểm \(8\): đến thành phố \(4\).

Không có cách di chuyển nào có tổng phí nhỏ hơn \(9\), nên in ra \(9\).

Ví dụ này thỏa mãn các ràng buộc của các phân nhóm \(1, 2, 5, 6, 7\).

Ví dụ 3

Input
2 1 10
2 1 4 7
Output
-1
Giải thích

Không thể đi từ thành phố \(1\) đến thành phố \(2\) bằng đường cao tốc, nên in ra -1.

Ví dụ này thỏa mãn các ràng buộc của các phân nhóm \(2, 5, 6, 7\).

Ví dụ 4

Input
4 3 5
1 2 3 1
2 3 1 10
3 4 7 6
Output
37
Giải thích

Ví dụ này thỏa mãn các ràng buộc của các phân nhóm \(2, 3, 5, 6, 7\).

Ví dụ 5

Input
8 8 2
1 2 1 5
5 6 3 1
2 4 10 18
3 5 3 1
1 3 4 2
5 6 2 2
2 5 2 3
6 8 1 1
Output
25
Giải thích

Có thể tồn tại nhiều đường cao tốc có cùng cặp đầu mút \((A_i,B_i)\).

Ví dụ này thỏa mãn các ràng buộc của các phân nhóm \(2, 4, 5, 6, 7\).

Ví dụ 6

Input
6 10 100000
4 2 212037 752027141
2 5 667097 1571491
2 1 769275 576006950
1 2 711969 526189398
5 3 733555 206320177
3 4 364807 802102091
1 4 467240 183184247
3 5 44994 15991843
5 3 613192 782356546
4 6 832593 639529758
Output
47546714005
Giải thích

Ví dụ này thỏa mãn các ràng buộc của các phân nhóm \(5, 6, 7\).

Nguồn

Bản dịch tiếng Việt từ đề gốc tiếng Nhật của Ủy ban Olympic Tin học Nhật Bản. Đề gốc và bản dịch được cung cấp theo giấy phép CC BY-SA 4.0.