JOI 2017 - Arranging Tickets

Xem PDF



Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 2600 (p) Thời gian: 4.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Ở Cộng hòa JOI có \(N\) nhà ga, được đánh số từ \(1\) đến \(N\) và nằm theo thứ tự chiều kim đồng hồ trên một tuyến đường sắt hình tròn.

\(N\) loại vé tàu, được đánh số từ \(1\) đến \(N\). Một vé loại \(i\) với \(1 \le i \le N-1\) cho phép một người đi từ ga \(i\) đến ga \(i+1\) hoặc theo chiều ngược lại. Một vé loại \(N\) cho phép một người đi giữa ga \(1\) và ga \(N\) theo một trong hai chiều. Vé chỉ được bán theo gói gồm đúng \(N\) vé, mỗi loại một vé.

Bạn làm việc tại một đại lý du lịch và hôm nay nhận được \(M\) yêu cầu. Yêu cầu thứ \(i\) cho biết có \(C_i\) người muốn đi từ ga \(A_i\) đến ga \(B_i\). Những người thuộc cùng một yêu cầu không nhất thiết phải đi cùng tuyến đường.

Yêu cầu

Tính số gói vé ít nhất cần mua để đáp ứng tất cả các yêu cầu.

Dữ liệu vào

  • Dòng đầu gồm hai số nguyên \(N,M\), là số nhà ga và số yêu cầu.
  • Trong \(M\) dòng tiếp theo, dòng thứ \(i\) gồm ba số nguyên \(A_i,B_i,C_i\), cho biết có \(C_i\) người muốn đi từ ga \(A_i\) đến ga \(B_i\).

Dữ liệu ra

In ra số gói vé ít nhất cần mua.

Ràng buộc

  • \(3 \le N \le 200\,000\).
  • \(1 \le M \le 100\,000\).
  • \(1 \le A_i,B_i \le N\) với mọi \(1 \le i \le M\).
  • \(1 \le C_i \le 1\,000\,000\,000\) với mọi \(1 \le i \le M\).
  • \(A_i \ne B_i\) với mọi \(1 \le i \le M\).

Phân nhóm

  1. Subtask 1 (10 điểm): \(N \le 20\), \(M \le 20\), và \(C_i=1\) với mọi \(i\).
  2. Subtask 2 (35 điểm): \(N \le 300\), \(M \le 300\), và \(C_i=1\) với mọi \(i\).
  3. Subtask 3 (20 điểm): \(N \le 3\,000\), \(M \le 3\,000\), và \(C_i=1\) với mọi \(i\).
  4. Subtask 4 (20 điểm): \(C_i=1\) với mọi \(i\).
  5. Subtask 5 (15 điểm): Không có ràng buộc bổ sung.

Giới hạn

  • Thời gian: 4 giây.
  • Bộ nhớ: 256 MB.

Ví dụ

Ví dụ 1

Input
3 3
1 2 1
2 3 1
3 1 1
Output
1
Giải thích

Nếu mọi người đều đi theo chiều kim đồng hồ thì cần đúng một vé mỗi loại, do đó chỉ cần mua một gói.

Ví dụ 2

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

Ở yêu cầu thứ nhất, có thể cho ba người đi theo chiều kim đồng hồ và một người đi ngược chiều kim đồng hồ. Ở yêu cầu thứ hai, cho cả hai người đi ngược chiều kim đồng hồ. Khi đó cần ba vé mỗi loại, nên ba gói là đủ; hai gói thì không thể đáp ứng tất cả hành trình.

Ví dụ 3

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

Có thể mua hai gói và phân vé như sau:

  • Đưa các vé loại \(1,2,3\) cho người đi từ ga \(1\) đến ga \(4\).
  • Đưa các vé loại \(1,6,5\) cho người đi từ ga \(2\) đến ga \(5\).
  • Đưa các vé loại \(3,4,5\) cho người đi từ ga \(3\) đến ga \(6\).

Một gói là không đủ, nên đáp án là \(2\).

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.

Kỳ thi: