Universal Cup Judging System

Universal Cup

时间限制: 5.0 s 内存限制: 1024 MB 总分: 100 可 Hack ✓
统计

Yana, Mino, White, dan Huzz adalah sahabat karib.

Belakangan ini Mino merasa bingung. Terobsesi dengan kegagalan masa lalunya di OI, ia kesulitan merencanakan masa depannya sambil mengatur jadwal sekolahnya yang padat. Ketiga temannya menyarankan agar ia mengevaluasi tingkat kepentingan tugas-tugasnya dan memprioritaskannya.

Misalkan terdapat $n$ tugas berbeda yang dinomori dari $1$ sampai $n$. Setiap kali, Huzz memilih dua tugas yang bersebelahan, White membandingkan keduanya, dan Yana menggabungkannya menjadi satu tugas tunggal. Mino terkejut mendapati bahwa proses ini secara tidak sengaja membentuk sebuah pohon segmen (segment tree), yang tidak harus membelah tepat di tengah. Lebih tepatnya, proses ini membentuk sebuah pohon dengan $2n - 1$ simpul, di mana setiap subpohon bersesuaian dengan sebuah segmen berurutan. Perhatikan bahwa semua $n$ tugas adalah daun, sedangkan $n - 1$ simpul lainnya masing-masing memiliki dua anak. Simpul-simpul yang dihasilkan dari perbandingan ini menentukan nilai sisi menuju anak-anaknya: $0$ untuk yang lebih kecil dan $1$ untuk yang lebih besar.

Mino sangat gemar berhitung. Ia mendefinisikan bobot dari setiap tugas sebagai jumlah XOR dari sisi-sisi sepanjang lintasan dari tugas tersebut menuju akar. Ia bertanya-tanya: jika bobot-bobotnya diberikan, ada berapa banyak cara untuk membangun pohon seperti itu dan membandingkan anak-anaknya?

Sekali lagi, Mino tidak mahir dalam OI, itulah sebabnya ia meminta bantuan Anda. Untuk menyederhanakan masalah, Anda hanya perlu mencari jawabannya modulo $998,244,353$.

Masukan

Baris pertama masukan berisi sebuah bilangan bulat positif $n$ ($1 \le n \le 250000$), yaitu banyaknya tugas.

Baris kedua berisi sebuah string biner $S$ dengan panjang $n$, di mana $S_i$ menyatakan Bitwise-XOR dari semua nilai pada sisi dari tugas $i$ menuju akar.

Keluaran

Cetak sebuah bilangan bulat, yaitu jawabannya modulo $998,244,353$.

Contoh

Masukan

4
0101

Keluaran

6

Catatan

Terdapat $6$ cara untuk membangun pohon dan membandingkan anak-anaknya:

Figure 1

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.