trang chủ / bài tập / datacenter

Bảo trì trung tâm dữ liệu

Đề bài

Mô tả

Một công ty vận hành n trung tâm dữ liệu, đánh số từ 1 đến n. Mỗi ngày có đúng h giờ (đánh số từ 0 đến h1). Trung tâm thứ j có một giờ bảo trì uj trong ngày — trong giờ đó nó tạm thời không phục vụ.

Công ty có m khách hàng. Dữ liệu của khách hàng thứ i được lưu đồng thời ở hai trung tâm khác nhau ci,1ci,2, để đảm bảo dữ liệu luôn truy cập được. Để giữ điều đó, hai trung tâm lưu cùng một khách hàng phải có giờ bảo trì khác nhau, tức là uci,1uci,2.

Lịch hiện tại đã thoả mãn điều kiện trên. Bây giờ công ty muốn chọn một tập con khác rỗng các trung tâm và dời giờ bảo trì của mọi trung tâm trong tập đó lên muộn hơn 1 giờ (nếu uj=h1 thì giờ mới là 0, ngược lại là uj+1). Sau khi dời, điều kiện uci,1uci,2 vẫn phải đúng cho mọi khách hàng.

Hãy tìm tập con như vậy với kích thước nhỏ nhất.

Dữ liệu vào

  • Dòng đầu chứa ba số nguyên n, m, h.
  • Dòng thứ hai chứa n số nguyên u1,u2,,un (0uj<h).
  • m dòng tiếp theo, mỗi dòng chứa hai số nguyên ci,1ci,2 (ci,1ci,2).

Dữ liệu vào đảm bảo lịch ban đầu đã hợp lệ và luôn tồn tại ít nhất một tập con đáp án.

Dữ liệu ra

  • Dòng đầu: số nguyên k — kích thước nhỏ nhất của tập con cần dời.
  • Dòng thứ hai: k số nguyên phân biệt — chỉ số các trung tâm trong tập con. Nếu có nhiều đáp án tối ưu, in ra bất kỳ đáp án nào.

Ràng buộc

  • 2n105
  • 1m105
  • 2h105
  • 1ci,1,ci,2n

Ví dụ

Input Output Giải thích
3 3 5
4 4 0
1 3
3 2
3 1
1
3
Chỉ cần dời trung tâm 3: giờ bảo trì của nó chuyển từ 0 thành 1. Khi đó các cặp (u1,u3)=(4,1), (u3,u2)=(1,4), (u3,u1)=(1,4) đều khác nhau.
4 5 4
2 1 0 3
4 3
3 2
1 2
1 4
1 3
4
1 2 3 4
Phải dời tất cả 4 trung tâm. Nếu chỉ dời một tập con bất kỳ, sẽ có khách hàng có hai trung tâm cùng giờ bảo trì sau khi dờ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