trang chủ / đề bài / dn_tst_23_fight

Chiến đấu

Đề bài

Mô tả

Cuội là một dũng sĩ lành nghề. Trong thế giới mà Cuội sinh sống, có tồn tại k kĩ năng chiến đấu khác nhau được đánh số từ 1 đến k. Ban đầu, Cuội đã thành thạo 4 kĩ năng khác nhau, đó là s1,s2,s3 và s4.

Cuội lên kế hoạch tấn công một lâu đài chứa chấp các tên tội phạm. May mắn thay, Cuội đã có được thông tin về kiến trúc của lâu đài. Lâu đài bao gồm n phòng được đánh số từ 1 đến n. Cuội bắt đầu ở phòng 1. Nếu Cuội hiện đang ở phòng thứ x, thì Cuội chỉ có thể ghé thăm phòng x+1, nhưng không thể quay lại phòng x−1. Như vậy Cuội đi qua các phòng lần lượt theo thứ tự 1,2,…,n.

Có 2 loại phòng là phòng chiến đấu và phòng thư viện. Phòng x có một trong các thông tin sau:

  • 1 a: phòng x là phòng chiến đấu. Trong căn phòng này có một tên tội phạm mà Cuội có thể chiến đấu. Tên này làm chủ kĩ năng a. Cuội cũng có thể chọn không chiến đấu với tên tội phạm này và ngay lập tức chuyển sang căn phòng tiếp theo.
  • 2: phòng x là một thư viện. Trong căn phòng này, Cuội có thể học cách sử dụng một trong những kĩ năng chiến đấu mới (một kĩ năng mà anh chưa thành thạo), nhưng anh phải quên một kĩ năng mà hiện anh đang làm chủ. Cuội cũng có thể chọn không học gì cả và ngay lập tức chuyển sang phòng tiếp theo. Như vậy tại mỗi thư viện Cuội học được nhiều nhất một kĩ năng, và anh luôn thành thạo đúng 4 kĩ năng.

Khả năng đánh bại tội phạm của Cuội được thể hiện bằng ma trận M. Ma trận M có kích thước là k×k, trong đó mỗi phần tử có thể là 0 hoặc 1. Các hàng và cột của M được đánh số từ 1 đến k. Nếu Cuội thành thạo kĩ năng chiến đấu i, thì Cuội có thể đánh bại những tên tội phạm làm chủ kĩ năng chiến đấu j nếu và chỉ nếu phần tử ở hàng i và cột j của ma trận M là 1. Cuội đánh bại được tên tội phạm trong một phòng chiến đấu khi và chỉ khi ít nhất một trong 4 kĩ năng anh đang thành thạo lúc đó đánh bại được kĩ năng của tên tội phạm.

Trước khi tấn công lâu đài, Cuội xin lời khuyên của bạn để có thể đánh bại càng nhiều tên tội phạm càng tốt. Hãy giúp Cuội đếm số lượng tội phạm tối đa mà anh ta có thể đánh bại!

Dữ liệu vào

  • Dòng đầu tiên chứa hai số nguyên n,k (1≤n≤2·105, 4≤k≤20).
  • Dòng hai chứa bốn số nguyên đôi một khác nhau s1,s2,s3,s4 (1≤s1,s2,s3,s4≤k).
  • k dòng tiếp theo, mỗi dòng chứa một xâu gồm k kí tự 0 hoặc 1 mô tả ma trận M; kí tự thứ j của dòng thứ i là phần tử ở hàng i, cột j.
  • Tiếp theo là n dòng mô tả các phòng trong lâu đài theo thứ tự từ phòng 1 đến phòng n, mỗi dòng theo một trong hai loại sau:
    • 1 a: nếu là phòng chiến đấu (1≤a≤k);
    • 2: nếu là phòng thư viện. Có tối đa 100 phòng là thư viện.

Dữ liệu ra

Đưa ra số tên tội phạm tối đa bị đánh bại.

Ràng buộc

  • 1≤n≤2·105, 4≤k≤20.
  • 1≤s1,s2,s3,s4≤k, đôi một khác nhau.
  • 1≤a≤k với mọi phòng chiến đấu.
  • Có tối đa 100 phòng là thư viện.

Subtasks

  • 15% số test không có phòng nào là thư viện.
  • 15% số test có số lượng phòng là thư viện ≤3.
  • 15% số test có k=5.
  • 15% số test có n≤1000, k≤10.
  • 15% số test có n≤1000.
  • 15% số test có k≤10.
  • 10% số test còn lại không có ràng buộc gì thêm.

Ví dụ

Input Output Giải thích
5 5
1 2 3 5
11100
01010
10110
01001
11010
1 2
1 5
2
1 3
1 5
3 Với các kĩ năng 1,2,3,5 Cuội đánh bại được tội phạm có kĩ năng 1,2,3,4. Cuội đánh bại tên tội phạm ở phòng 1 (kĩ năng 2), không đánh bại được tên ở phòng 2 (kĩ năng 5). Ở thư viện (phòng 3) Cuội quên kĩ năng 2 và học kĩ năng 4; với các kĩ năng 1,3,4,5 anh đánh bại được cả hai tên tội phạm ở phòng 4 và 5. Tổng cộng 3 tên.
7 6
1 2 3 4
100000
010000
001000
000100
000010
000001
1 5
2
1 5
1 5
2
1 6
1 1
4 Ví dụ bổ sung. Mỗi kĩ năng chỉ đánh bại được chính nó. Tên ở phòng 1 không bị đánh bại. Ở thư viện thứ nhất Cuội quên kĩ năng 2, học kĩ năng 5 và đánh bại hai tên ở phòng 3,4; ở thư viện thứ hai quên kĩ năng 3, học kĩ năng 6 và đánh bại hai tên ở phòng 6,7 (vẫn còn kĩ năng 1). Mỗi thư viện chỉ đổi được một kĩ năng.

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