Universal Cup Judging System

Universal Cup

Time Limit: 5.0 s Memory Limit: 1024 MB Total points: 100 Hackable ✓
Statistics

Yana, Mino, White och Huzz är bästa vänner.

Mino har känt sig förvirrad på sistone. Besatt av sina tidigare misslyckanden i OI har han kämpat med att planera sin framtid samtidigt som han hanterar sitt fullspäckade skolschema. Hans tre vänner föreslog att han skulle utvärdera hur viktiga hans uppgifter är och prioritera dem.

Antag att det finns $n$ olika uppgifter numrerade från $1$ till $n$. Varje gång väljer Huzz två intilliggande uppgifter, White jämför dem och Yana slår ihop dem till en enda uppgift. Mino blir förvånad när han upptäcker att denna process av en slump bildar ett segmentträd, som inte nödvändigtvis delar sig på mitten. Mer precist bildar den ett träd med $2n - 1$ noder, där varje delträd motsvarar ett sammanhängande segment. Observera att alla $n$ uppgifter är löv, medan de övriga $n - 1$ noderna har två barn vardera. Dessa noder, som uppstår genom jämförelser, definierar värdena på kanterna till sina barn: $0$ för det mindre och $1$ för det större.

Mino är mycket förtjust i beräkningar. Han definierar vikten av varje uppgift som XOR-summan av kanterna längs vägen från uppgiften till roten. Han undrar: om vikterna är givna, på hur många sätt kan man konstruera sådana träd och jämföra barnen?

Återigen är Mino inte särskilt skicklig i OI, vilket är anledningen till att han har vänt sig till dig för hjälp. För att förenkla problemet behöver du bara hitta svaret modulo $998,244,353$.

Indata

Den första raden i indatan innehåller ett positivt heltal $n$ ($1 \le n \le 250000$), antalet uppgifter.

Den andra raden innehåller en binär sträng $S$ av längd $n$, där $S_i$ representerar bitvis XOR (Bitwise-XOR) av alla värden på kanterna från uppgift $i$ till roten.

Utdata

Skriv ut ett heltal, svaret modulo $998,244,353$.

Exempel

Indata

4
0101

Utdata

6

Förklaring

Det finns $6$ sätt att konstruera trädet och jämföra barnen:

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.