trang chủ / đề bài / barbecue

Xiên nướng của Pavel

Đề bài

Mô tả

Có n chiếc xiên nướng nằm trên n vị trí xếp thành một hàng, mỗi vị trí đúng một chiếc xiên. Mỗi chiếc xiên tại một thời điểm còn có một trong hai hướng: hướng ban đầu hoặc hướng ngược lại. Như vậy có tất cả 2n trạng thái đặt khác nhau: n vị trí nhân với 2 hướng.

Quy trình đảo xiên được mô tả bởi một hoán vị p1,p2,…,pn và một dãy nhị phân b1,b2,…,bn. Mỗi giây, đồng thời với mọi i, chiếc xiên đang ở vị trí i được chuyển sang vị trí pi; ngoài ra nếu bi=1 thì chiếc xiên đó còn bị lật ngược hướng.

Quy trình được gọi là hợp lệ nếu tồn tại số nguyên k sao cho sau k giây, mỗi chiếc xiên đã từng đi qua tất cả 2n trạng thái đặt. Một chiếc xiên được phép đi qua cùng một trạng thái nhiều lần.

Hãy tìm số phần tử ít nhất cần thay đổi trong hai dãy p và b để quy trình trở thành hợp lệ. Lưu ý: sau khi thay đổi, dãy p vẫn phải là một hoán vị của 1,2,…,n; còn các phần tử của b vẫn phải bằng 0 hoặc 1. Mỗi phần tử bị sửa ở p hay ở b đều tính là một lần thay đổi.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n là số chiếc xiên.
  • Dòng thứ hai chứa n số nguyên p1,p2,…,pn mô tả hoán vị.
  • Dòng thứ ba chứa n số nguyên b1,b2,…,bn, mỗi số bằng 0 hoặc 1.

Dữ liệu ra

In ra một số nguyên duy nhất là số phần tử ít nhất cần thay đổi.

Ràng buộc

  • 1≤n≤2·105
  • 1≤pi≤n, và p là một hoán vị của 1,2,…,n
  • bi∈{0,1}

Ví dụ

Input Output Giải thích
4
4 3 2 1
0 1 1 1
2 Hoán vị p gồm hai chu trình (1↔4) và (2↔3) nên xiên ở vị trí 1 không bao giờ tới được vị trí 2. Đổi p thành 4 3 1 2 (sửa 2 phần tử) thì p thành một chu trình duy nhất. Dãy b có tổng bằng 3 là số lẻ nên giữ nguyên.
3
2 3 1
0 0 0
1 Hoán vị p đã là một chu trình duy nhất nên không cần sửa. Nhưng không xiên nào bị lật nên mỗi xiên chỉ đi qua 3 trong 6 trạng thái. Đổi một phần tử bất kỳ của b thành 1 là đủ.

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