Hoán vị xanh đỏ

Đề bài

Mô tả

Cho một mảng số nguyên a gồm n phần tử. Các phần tử có thể bằng nhau hoặc khác nhau.

Mỗi phần tử được tô một trong hai màu: xanh (kí hiệu B) hoặc đỏ (kí hiệu R). Không có phần tử nào chưa được tô màu. Mỗi bước, bạn được thực hiện một trong hai thao tác sau:

  • chọn một phần tử màu xanh bất kì và giảm giá trị của nó đi 1;
  • hoặc chọn một phần tử màu đỏ bất kì và tăng giá trị của nó lên 1.

Số bước là không giới hạn, và có thể xảy ra trường hợp mảng chỉ toàn một màu (khi đó một trong hai thao tác không dùng được).

Hãy xác định xem có thể thực hiện 0 hoặc nhiều bước để mảng a trở thành một hoán vị của các số từ 1 đến n hay không. Nói cách khác, sau khi thực hiện các bước, mảng a phải chứa tất cả các số 1,2,…,n, mỗi số đúng một lần, theo thứ tự bất kì.

Dữ liệu vào

  • Dòng đầu chứa số nguyên t là số bộ dữ liệu.
  • Mỗi bộ dữ liệu gồm ba dòng:
    • Dòng thứ nhất chứa số nguyên n là độ dài mảng a.
    • Dòng thứ hai chứa n số nguyên a1,a2,…,an.
    • Dòng thứ ba là một xâu độ dài n chỉ gồm các kí tự B và R: kí tự thứ i là B nếu ai màu xanh, là R nếu ai màu đỏ.

Dữ liệu ra

In ra t dòng, dòng thứ i là câu trả lời cho bộ dữ liệu thứ i: YES nếu có thể biến mảng thành một hoán vị, NO nếu không thể.

Ràng buộc

  • 1≤t≤104
  • 1≤n≤2·105
  • −109≤ai≤109
  • Tổng n trên tất cả các bộ dữ liệu không vượt quá 2·105.

Ví dụ

Input Output Giải thích
8
4
1 2 5 2
BRBR
2
1 1
BB
5
3 1 4 2 5
RBRRB
5
3 1 3 1 3
RBRRB
5
5 1 5 1 5
RBRRB
4
2 2 2 2
BRBR
2
1 -2
BR
4
-2 -1 4 0
RRRR
YES
NO
YES
YES
NO
YES
YES
YES
Bộ 1: giảm a3 từ 5 xuống 3 rồi tăng a2 từ 2 lên 4, được [1,4,3,2]. Bộ 2: cả hai phần tử đều màu xanh và bằng 1, chỉ giảm được nên không thể tạo ra số 2. Bộ 5: ba phần tử đỏ mang giá trị 5,5,5 chỉ tăng được, không thể tạo ra hai số phân biệt nhỏ hơn 5 trong {1,…,5}. Bộ 8: mọi phần tử đỏ đều nhỏ hơn hoặc bằng 4 nên tăng lên được 1,2,3,4.
10
1
1
B
1
1
R
1
0
B
1
0
R
1
2
B
1
2
R
1
1000000000
B
1
1000000000
R
1
-1000000000
B
1
-1000000000
R
YES
YES
NO
YES
YES
NO
YES
NO
NO
YES
Với n=1 mục tiêu duy nhất là số 1. Phần tử xanh phải có giá trị lớn hơn hoặc bằng 1 (giảm xuống được), phần tử đỏ phải có giá trị nhỏ hơn hoặc bằng 1 (tăng lên được).
8
3
1 2 3
BBB
3
3 2 1
BBB
3
1 1 1
BBB
3
5 5 5
BBB
3
1 2 2
BBB
3
2 2 1
BBB
3
1 1 3
BBB
3
0 5 5
BBB
YES
YES
NO
YES
NO
NO
NO
NO
Khi toàn bộ mảng màu xanh, sắp xếp tăng dần rồi gán lần lượt các mục tiêu 1,2,3. Bộ 4 với [5,5,5] vẫn được YES vì cả ba đều giảm xuống 1,2,3 được, còn bộ 8 với [0,5,5] thất bại ngay ở phần tử 0.

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