IOI 2007 - Sails

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: 2100 (p) Thời gian: 1.0s Bộ nhớ: 64M Input: bàn phím Output: màn hình

Một chiếc thuyền buồm mới dành cho cướp biển đang được đóng. Thuyền có \(N\) cột buồm, mỗi cột được chia thành các đoạn có độ dài một đơn vị; chiều cao của cột bằng số đoạn của nó. Mỗi cột được gắn một số cánh buồm, mỗi cánh chiếm vừa đúng một đoạn. Có thể đặt các cánh buồm trên một cột vào các đoạn khác nhau tùy ý, nhưng mỗi đoạn chỉ được gắn nhiều nhất một cánh buồm.

Các cách bố trí buồm khác nhau tạo ra lực đẩy khác nhau khi đón gió. Những cánh buồm nằm phía trước các cánh buồm khác ở cùng độ cao nhận được ít gió hơn và tạo ra ít lực đẩy hơn. Với mỗi cánh buồm, định nghĩa độ kém hiệu quả của nó là tổng số cánh buồm nằm phía sau nó và ở cùng độ cao. Hai khái niệm phía trước và phía sau được xác định theo hướng của thuyền: trong hình minh họa, phía trước ở bên trái, phía sau ở bên phải.

Tổng độ kém hiệu quả của một cách bố trí là tổng độ kém hiệu quả của tất cả các cánh buồm.

Thuyền trong hình có \(6\) cột buồm với chiều cao lần lượt là \(3,5,4,2,4,3\), tính từ phía trước (front, bên trái hình) ra phía sau (back, bên phải hình). Cách bố trí này có tổng độ kém hiệu quả bằng \(10\). Số ghi trong mỗi cánh buồm là độ kém hiệu quả của riêng cánh buồm đó.

Cho chiều cao và số cánh buồm của từng cột, hãy tìm tổng độ kém hiệu quả nhỏ nhất có thể.

Dữ liệu vào

Dòng đầu chứa số nguyên \(N\), là số cột buồm trên thuyền.

Mỗi dòng trong \(N\) dòng tiếp theo chứa hai số nguyên \(H,K\), lần lượt là chiều cao và số cánh buồm của cột tương ứng. Các cột được cho theo thứ tự từ phía trước ra phía sau thuyền.

Dữ liệu ra

Ghi một số nguyên duy nhất: tổng độ kém hiệu quả nhỏ nhất có thể.

Lưu ý dùng kiểu số nguyên \(64\) bit để tính toán và xuất kết quả, chẳng hạn long long trong C/C++ hoặc int64 trong Pascal.

Ràng buộc

  • \(2\le N\le 100\,000\).
  • \(1\le H\le 100\,000\).
  • \(1\le K\le H\).

Chấm điểm trên hệ thống

Lưu ý: Cách chia nhóm và tính điểm dưới đây là bản điều chỉnh để luyện tập trên hệ thống, không khẳng định tương đương cách chấm tại IOI gốc.

Mỗi nhóm được chấm độc lập: chỉ nhận điểm của nhóm khi vượt qua tất cả bộ kiểm thử trong nhóm; nếu có bộ kiểm thử không đạt thì nhóm nhận 0 điểm. Tổng điểm tối đa là 100.

Nhãn nhóm là phần số trong tên tệp dữ liệu gốc. Tất cả tệp cùng nhãn, kể cả các hậu tố chữ và pf, đều thuộc nhóm đó.

Nhãn nhóm Điểm Tệp dữ liệu vào gốc
1 8 sails/sails.in.1a, sails/sails.in.1b
2 8 sails/sails.in.2a, sails/sails.in.2b
3 9 sails/sails.in.3a, sails/sails.in.3b
4 9 sails/sails.in.4a, sails/sails.in.4b
5 9 sails/sails.in.5a, sails/sails.in.5b
6 9 sails/sails.in.6a, sails/sails.in.6b
7 9 sails/sails.in.7
8 9 sails/sails.in.8
9 10 sails/sails.in.9a, sails/sails.in.9b
10 10 sails/sails.in.10a, sails/sails.in.10b
11 10 sails/sails.in.11a, sails/sails.in.11b

Các ví dụ trong đề không tính điểm.

Ví dụ

Ví dụ 1

Input
6
3 2
5 3
4 1
2 1
4 3
3 2
Output
10
Note

Ví dụ này tương ứng với hình minh họa trong phần mô tả.

Nguồn

IOI 2007.

Tệp

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: