JOI 2024 - Examination 2

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: 2600 (p) Thời gian: 2.0s Bộ nhớ: 1G Input: bàn phím Output: màn hình

JOI-kun học tại trường trung học IOI và sắp tham gia kỳ thi cuối kỳ. Bài thi kiểm tra khả năng tính đúng giá trị của một hàm IOI. Hàm IOI là một xâu được tạo bằng một trong sáu quy tắc dưới đây, do trường IOI định nghĩa. Mỗi hàm ánh xạ các số nguyên từ \(1\) đến \(10^9\) thành một trong hai giá trị logic True hoặc False.

  1. Với số nguyên \(a\) trong đoạn từ \(1\) đến \(10^9\), xâu [a] là một hàm IOI; ở đây a là biểu diễn thập phân của số \(a\). Hàm này trả về True cho các số lớn hơn hoặc bằng \(a\), và False cho các số nhỏ hơn \(a\).
  2. Nếu f là một hàm IOI thì (f) cũng là một hàm IOI. Với mỗi số đầu vào, hàm này trả về cùng giá trị với f.
  3. Nếu f là một hàm IOI thì !f cũng là một hàm IOI. Hàm này trả về False cho các số mà f trả về True, và ngược lại.
  4. Nếu fg là các hàm IOI thì f&g cũng là một hàm IOI. Hàm này trả về True khi cả fg đều trả về True, và False trong các trường hợp còn lại.
  5. Nếu fg là các hàm IOI thì f^g cũng là một hàm IOI. Hàm này trả về True khi đúng một trong hai hàm f, g trả về True, và False trong các trường hợp còn lại.
  6. Nếu fg là các hàm IOI thì f|g cũng là một hàm IOI. Hàm này trả về True khi ít nhất một trong hai hàm f, g trả về True, và False trong các trường hợp còn lại.

Nếu một xâu có thể được tạo bằng nhiều quy tắc, chọn quy tắc có số thứ tự lớn nhất làm bước tạo hàm cuối cùng để xác định giá trị của hàm. Chẳng hạn, với [1]&[2]|[3], áp dụng quy tắc \(6\) cho f = [1]&[2], g = [3], thay vì áp dụng quy tắc \(4\) cho f = [1], g = [2]|[3]. Ngoài ra, khi áp dụng quy tắc \(4\), \(5\) hoặc \(6\), chọn f dài nhất có thể. Chẳng hạn, với [4]^[5]^[6], áp dụng quy tắc \(5\) cho f = [4]^[5], g = [6], thay vì chọn f = [4], g = [5]^[6].

Để ôn thi, JOI-kun đã chuẩn bị một hàm IOI \(S\) có độ dài \(N\) và muốn luyện xác định giá trị mà hàm này trả về cho \(Q\) số nguyên \(X_1,X_2,\ldots,X_Q\). Biết bạn thành thạo về hàm IOI, cậu nhờ bạn viết một lời giải mẫu.

Cho \(N,Q,S\)\(X_1,X_2,\ldots,X_Q\), hãy xác định giá trị logic mà hàm IOI \(S\) trả về cho từng số \(X_i\).

Dữ liệu vào

Đọc từ đầu vào chuẩn theo định dạng:

N Q
S
X_1
X_2
...
X_Q

Dữ liệu ra

Xuất \(Q\) dòng ra đầu ra chuẩn. Dòng thứ \(i\) (\(1\le i\le Q\)) chứa giá trị logic True hoặc False mà hàm IOI \(S\) trả về cho \(X_i\).

Ràng buộc

  • \(1\le N\le 1\,000\,000\).
  • \(1\le Q\le 200\,000\).
  • \(S\) là một hàm IOI có độ dài \(N\).
  • \(1\le X_i\le 10^9\) với \(1\le i\le Q\).
  • \(N,Q,X_i\) (\(1\le i\le Q\)) đều là số nguyên.

Phân nhóm

Mọi nhóm đều tuân theo các ràng buộc chung ở trên.

Nhóm Điểm Ràng buộc bổ sung
1 5 \(S\) không chứa ký tự & hoặc |.
2 20 \(Q=1\).
3 10 \(N\le 10\,000\).
4 6 \(S\) không chứa ký tự ! hoặc ^.
5 12 Mỗi khi áp dụng quy tắc \(4\) hoặc \(6\) trong quá trình tạo \(S\), ít nhất một trong hai hàm f, g phải là hàm IOI được tạo bằng quy tắc \(1\), tức có dạng [a].
6 20 \(N\le 400\,000\).
7 27 Không có ràng buộc bổ sung.

Ví dụ

Ví dụ 1

Input
15 5
(![2]|[3])&![4]
1
2
3
4
5
Output
True
False
True
False
False
Note

Khi tạo \(S\) theo các quy tắc trong đề, một số hàm IOI xuất hiện trong quá trình đó có các giá trị sau tại những số \(X_i\) (\(1\le i\le Q\)):

\(X_i\) ![2] [3] ![2]|[3] ![4] (![2]|[3])&![4]
1 True False True True True
2 False False False True False
3 False True True True True
4 False True True False False
5 False True True False False

Ví dụ này thỏa mãn ràng buộc của các nhóm \(3,6,7\).

Ví dụ 2

Input
20 4
(!![23])^((([116])))
54
1
200
89
Output
True
False
False
True
Note

Ví dụ này thỏa mãn ràng buộc của các nhóm \(1,3,5,6,7\).

Ví dụ 3

Input
32 4
[2]|[5]&[1]|(([1000000000])|[7])
4
10
6
1
Output
True
True
True
False
Note

Ví dụ này thỏa mãn ràng buộc của các nhóm \(3,4,6,7\).

Nguồn

JOI Open Contest 2024, bài Examination 2, tác giả Ryomei Sugai.

Bản dịch tiếng Việt từ đề của JCIOI (Ủy ban Olympic Tin học Quốc tế Nhật Bản), theo giấy phép CC BY-SA 4.0.

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: