trang chủ / đề bài / machprog

Phân công máy móc

Đề bài

Mô tả

Một công ty vừa nhận về k cỗ máy giống hệt nhau và đang có n công việc cần xử lý.

Công việc thứ i bắt buộc phải bắt đầu đúng tại thời điểm si, kéo dài ti đơn vị thời gian, và mang lại lợi nhuận ci nếu được hoàn thành. Không được phép dời lịch bắt đầu của bất kỳ công việc nào.

Mỗi cỗ máy đều có thể làm bất kỳ công việc nào, nhưng tại mỗi thời điểm chỉ làm được đúng một công việc. Nếu một cỗ máy nhận công việc i, nó bận trong toàn bộ các thời điểm si,si+1,…,si+ti−1 và không thể chuyển sang công việc khác trong khoảng đó. Ngay tại thời điểm si+ti cỗ máy đã rảnh và có thể nhận công việc mới.

Công ty không bắt buộc phải làm hết tất cả công việc. Hãy chọn ra một tập công việc có thể thực hiện được bằng k cỗ máy sao cho tổng lợi nhuận thu được là lớn nhất.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên n và k: số công việc và số cỗ máy.
  • n dòng tiếp theo, dòng thứ i chứa ba số nguyên si, ti, ci: thời điểm bắt đầu, thời gian thực hiện và lợi nhuận của công việc thứ i.

Dữ liệu ra

In ra n số nguyên x1,x2,…,xn, trong đó xi=1 nếu công việc thứ i được chọn và xi=0 nếu ngược lại.

Nếu có nhiều cách chọn cùng đạt tổng lợi nhuận lớn nhất, in ra một cách bất kỳ.

Ràng buộc

  • 1≤n≤1000
  • 1≤k≤50
  • 1≤si,ti≤109
  • 1≤ci≤106

Ví dụ

Input Output Giải thích
3 1
2 7 5
1 3 3
4 1 3
0 1 1 Ba công việc chiếm các khoảng thời gian 2…8, 1…3 và 4…4. Chỉ có một cỗ máy, mà công việc 1 giao với cả hai công việc còn lại, nên hoặc chọn công việc 1 (lợi nhuận 5), hoặc chọn công việc 2 rồi công việc 3 (lợi nhuận 3+3=6). Cách thứ hai tốt hơn.
5 2
1 5 4
1 4 5
1 3 2
4 1 2
5 6 1
1 1 0 0 1 Cỗ máy thứ nhất làm công việc 1 (khoảng 1…5). Cỗ máy thứ hai làm công việc 2 (khoảng 1…4), xong lúc đó đã rảnh nên nhận tiếp công việc 5 (khoảng 5…10). Tổng lợi nhuận 4+5+1=10, không cách nào tốt hơn.

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