trang chủ / đề bài / csp_tst_23_f

Đi tìm kho báu

Đề bài

Mô tả

Băng Mũ Rơm của Luffy đã đặt chân đến hòn đảo Laugh Tale, nơi chứa kho báu ONE PIECE. Luffy tìm thấy n chiếc hộp, chiếc hộp thứ i chứa các đồ có giá trị ci. Trong tay Luffy có k chiếc chìa khóa được đánh số từ 1 đến k. Chìa khóa thứ i có thể được dùng để mở được một trong hai chiếc hộp ai hoặc bi.

Mỗi chiếc hộp chỉ có thể được mở khóa một lần và không cần thiết phải dùng tất cả các chìa khóa. Như vậy mỗi chìa khóa mở nhiều nhất một hộp, mỗi hộp được mở bởi nhiều nhất một chìa khóa. Hai chìa khóa khác nhau có thể cùng mở được một cặp hộp.

Luffy chỉ được thực hiện Q truy vấn, truy vấn thứ i là yêu cầu thuộc một trong hai loại:

  • Bỏ đi chiếc chìa khóa thứ pi (các chìa khóa còn lại không được đánh số lại sau các truy vấn).
  • Thêm lại chiếc chìa khóa pi đã bị bỏ đi trước đó (các chìa khóa còn lại không cần đánh số lại).

Ban đầu Luffy có đủ cả k chìa khóa.

Yêu cầu: Hãy cho biết, sau khi thực hiện mỗi truy vấn, dùng các chìa khóa còn lại để mở hộp, với cách mở khóa hộp luôn tối ưu, tổng giá trị kho báu lớn nhất thu được từ các hộp được mở là bao nhiêu. Mỗi truy vấn chỉ thay đổi tập chìa khóa đang có; với mỗi truy vấn, cách mở hộp được chọn lại từ đầu (không phụ thuộc các truy vấn trước).

Dữ liệu vào

  • Dòng đầu tiên chứa ba số nguyên dương n,k,Q (2≤n≤2·105, 1≤k,Q≤2·105) là số hộp kho báu, số chìa khóa và số truy vấn.
  • Dòng tiếp theo gồm n số nguyên dương c1,c2,…,cn (ci≤109), là giá trị của các hộp kho báu.
  • k dòng tiếp theo, dòng thứ i gồm hai số nguyên dương ai,bi (1≤ai,bi≤n, ai≠bi), mô tả chiếc chìa khóa thứ i mở được hộp ai hoặc hộp bi.
  • Q dòng tiếp theo, mỗi dòng chứa hai số nguyên mô tả một truy vấn:
    • 1 pi: truy vấn loại 1, bỏ đi chìa khóa pi (1≤pi≤k). Dữ liệu đảm bảo chìa khóa này đang có trong tay Luffy.
    • 2 pi: truy vấn loại 2, thêm lại chìa khóa pi (1≤pi≤k). Dữ liệu đảm bảo chìa khóa này đã được bỏ đi trước đó và chưa được thêm lại.

Dữ liệu ra

Gồm Q dòng, dòng thứ i gồm một số nguyên là tổng giá trị kho báu lớn nhất thu được sau khi thực hiện truy vấn thứ i.

Ràng buộc

  • 2≤n≤2·105.
  • 1≤k≤2·105, 1≤Q≤2·105.
  • 1≤ci≤109.
  • 1≤ai,bi≤n, ai≠bi.
  • 1≤pi≤k.

Subtasks

  • Subtask 1 (20% số điểm): n,k,Q≤16.
  • Subtask 2 (30% số điểm): n,k,Q≤2000.
  • Subtask 3 (50% số điểm): không có ràng buộc gì thêm.

Ví dụ

Input Output Giải thích
4 4 4
9 5 7 2
1 2
2 3
3 1
1 4
1 4
1 1
2 1
1 2
21
16
21
16
Sau truy vấn thứ nhất, còn lại các chìa khóa 1,2,3. Ta có thể dùng chìa 1 để mở hộp 2, chìa 2 để mở hộp 3 và chìa 3 để mở hộp 1. Tổng giá trị của các hộp được mở là 9+5+7=21. Sau truy vấn thứ hai, còn lại chìa khóa 2 và 3. Ta có thể dùng chìa 2 để mở hộp 3, chìa 3 để mở hộp 1. Tổng giá trị là 9+7=16. Sau truy vấn thứ ba, còn lại các chìa khóa 1,2,3, giống truy vấn một, tổng giá trị là 21. Sau truy vấn thứ tư, chỉ còn lại chìa khóa 1 và 3. Tổng giá trị các hộp mở được là 9+7=16.
3 2 4
5 1 3
1 2
1 2
1 1
2 1
1 2
1 1
5
6
5
0
Hai chìa khóa cùng mở được hộp 1 hoặc hộp 2. Sau truy vấn thứ nhất chỉ còn chìa 2, mở hộp 1: 5. Sau truy vấn thứ hai có cả hai chìa, mở cả hộp 1 và hộp 2: 5+1=6. Sau truy vấn thứ ba chỉ còn chìa 1: 5. Sau truy vấn thứ tư không còn chìa nào: 0. Hộp 3 không có chìa nào mở được.

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