Hướng dẫn giải của Mofk Cup Round 1 - ARTS


Chỉ dùng lời giải này khi không có ý tưởng, và đừng copy-paste code từ lời giải này. Hãy tôn trọng người ra đề và người viết lời giải.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.

Tác giả: bedao

Điều kiện cần và đủ để tồn tại ít nhất một cấu hình kết quả là:

  • Số lượng ký tự ~1~ phải là số chẵn và lớn hơn 0.
  • Tồn tại ít 1 cặp vị trí có ký tự ~0~ sao cho giữa chúng tồn tại ít nhất một ký tự ~1~.

Nếu cấu hình của dãy nhị phân tồn tại ít nhất một dãy kết quả, tồn tại một thuật toán xây dựng kết quả như sau:

  1. Xây dựng kết quả cho những vị trí mang ký tự ~1~: Giả sử có ~k~ cặp vị trí ~1~, ta lần lượt điền các giá trị từ ~n~ đến ~n-k+1~ cho các cặp vị trí từ ngoài vào trong.
  2. Xây dựng kết quả cho những vị trí mang ký tự ~0~: Lần lượt điền các giá trị ~x~ từ ~n-k~ về ~1~. Với mỗi giá trị ~x~ ta sẽ thực hiện thuật toán chọn cặp vị trí để điền vào giá trị ~x~ như sau:
    • Nếu tồn tại cặp vị trí chưa điền ~i~ và ~j~ sao cho giữa ~i~ và ~j~ có vị trí đã được điền và những vị trí liền kề ~i~ và ~j~ có tồn tại ít nhất một vị trí chưa điền:
      • Chọn ~u:=i~ nếu những vị trí liền kề ~i~ đều đã được điền hoặc đều chưa được điền. Nếu không chọn ~u:=i'~ với ~i'~ là vị trí liền kề ~i~ và chưa được điền.
      • Chọn ~v:=j~ nếu những vị trí liền kề ~i~ đều đã được điền hoặc đều chưa được điền. Nếu không chọn ~v:=j'~ với ~j'~ là vị trí liền kề ~j~ và chưa được điền.
      • Sau khi chọn được ~u~ và ~v~, điền vào 2 vị trí đó giá trị ~x~.
    • Nếu chỉ còn tồn tại những cặp vị trí chưa điền ~i~ và ~j~ sao cho giữa ~i~ và ~j~ có vị trí đã được điền và những vị trí liền kề ~i~ và ~j~ có không tồn tại vị trí chưa điền: Điền vào 2 vị trí ~i~ và ~j~ giá trị ~x~.
    • Trong suốt quá trình xây dựng cho những vị trí có ký tự ~0~, nếu còn vị trí chưa điền, sẽ luôn tồn tại cặp vị trí ~i~ và ~j~ chưa điền sao cho giữa chúng có vị trí đã được điền.

Bình luận

Hãy đọc nội quy trước khi bình luận.



  • 0
    letangphuquy  đã bình luận lúc 23, Tháng 8, 2023, 18:39

    Bài này em in pattern giống test ví dụ (vị trí bit 0 sắp thành 2 dãy giảm dần 4 3 2 1 4 3 2 1) cũng ăn đc gần hết test ạ, chắc test ko sinh TH giết thuật này.