QOJ.ac

QOJ

Time Limit: 2 s Memory Limit: 512 MB Total points: 100 Hackable ✓

#22829. Affectation binaire

Statistics

Vuong est l'un des plus grands mathématiciens de tous les temps ! Son passe-temps consiste à découvrir les propriétés mathématiques de tout, et parfois même de choses qui n'existent pas ! Pour son anniversaire, son ami programmeur lui a offert une chaîne binaire $S$ de longueur $n$. Au bout d'un moment, il a découvert deux propriétés très intéressantes de $S$ :

  • $X(S)$ : la longueur de la plus courte chaîne qui n'est pas une sous-séquence de $S$.

  • $Y(S)$ : le nombre de chaînes de longueur $X(S)$ qui ne sont pas des sous-séquences de $S$.

Voyant que Vuong s'amusait à trouver ces deux propriétés, son ami programmeur s'est dit qu'il serait génial de modifier également un peu la chaîne $S$. Le programmeur effectuera séquentiellement $q$ modifications sur la chaîne $S$. Chaque modification est de l'un des types suivants :

  • 0 l r : mettre $S_l,S_{l+1},\ldots,S_r$ à $0$.

  • 1 l r : mettre $S_l,S_{l+1},\ldots,S_r$ à $1$.

  • F l r : inverser $S_l,S_{l+1},\ldots,S_r$. C'est-à-dire que pour $l\le i\le r$, si $S_i$ vaut $0$, on le met à $1$, sinon on le met à $0$.

Et bien sûr, pour chaque version modifiée de $S$, Vuong s'est également fait un plaisir de trouver $X(S)$ et $Y(S)$, car c'était son anniversaire !

Mais une énigme n'est pas complète sans sa réponse. Étant donné la chaîne $S$ et la liste des $q$ modifications apportées à la chaîne $S$, aidez l'ami programmeur à trouver $X(S)$ et $Y(S)$ pour chaque modification, afin qu'il puisse vérifier le résultat de Vuong avec la réponse.

Comme la réponse peut être très grande, veuillez afficher la réponse modulo $10^9+7$.

Une chaîne $a$ est une sous-séquence d'une chaîne $b$ si $a$ peut être obtenue à partir de $b$ en supprimant plusieurs caractères (éventuellement zéro ou tous). Par exemple, bd, acd, b sont des sous-séquences de abcd, tandis que da ne l'est pas.

Entrée

La première ligne contient deux entiers $n,q$ ($1\le n,q\le100\,000$) — la longueur de la chaîne $S$ et le nombre de modifications.

La deuxième ligne contient la chaîne binaire $S$ de longueur $n$.

La $i$-ème des $q$ lignes suivantes contient la description de la $i$-ème opération sous l'une des formes suivantes :

  • 0 l r ($1\le l\le r\le n$) : mettre $S_l,S_{l+1},\ldots,S_r$ à $0$.

  • 1 l r ($1\le l\le r\le n$) : mettre $S_l,S_{l+1},\ldots,S_r$ à $1$.

  • F l r ($1\le l\le r\le n$) : inverser $S_l,S_{l+1},\ldots,S_r$.

Sortie

Pour chaque modification de $S$, affichez sur une ligne deux entiers $X(S)$ et $Y(S)$ modulo $10^9+7$.

Exemples

Entrée 1

4 3
0110
0 2 3
1 3 4
F 2 3

Sortie 1

1 1
2 1
3 4

Note

Dans l'exemple, la chaîne $S$ est 0110, et il y a $q=3$ modifications sur $S$.

Le tableau suivant illustre les modifications de $S$.

Ordre Modification Valeur de $S$ $X(S)$ $Y(S)$
Initial 0110 $3$ $5$
$1$ 0 2 3 0000 $1$ $1$
$2$ 1 3 4 0011 $2$ $1$
$3$ F 2 3 0101 $3$ $4$
  • Pour $S=$ 0000, $X(S)=1$ et $Y(S)=1$, car il existe une seule chaîne de longueur $1$ qui n'est pas une sous-séquence de $S$, à savoir la chaîne 1.

  • Pour $S=$ 0011, la chaîne 10 est la plus courte, et c'est la seule chaîne de longueur $2$ qui n'est pas une sous-séquence de $S$.

  • Pour $S=$ 0101, la liste des chaînes de longueur minimale qui ne sont pas des sous-séquences de $S$ est {000, 100, 110, 111}.

  • Pour la chaîne initiale $S=$ 0110, la liste des chaînes de longueur minimale qui ne sont pas des sous-séquences de $S$ est {000, 001, 100, 101, 111}. Ainsi $X(S)=3$ et $Y(S)=5$, mais vous n'avez pas besoin d'afficher ces deux nombres.

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.