QOJ.ac

QOJ

Time Limit: 1 s Memory Limit: 1024 MB Total points: 100 Difficulty: [show] Hackable ✓

#4658. Retirer les pierres

Statistics

Vous jouez à un petit jeu appelé « Retirer les pierres ».

Il y a $n$ tas de pierres alignés, le $i$-ième contenant $a_i$ pierres. Votre tâche est de retirer toutes les pierres à l'aide des opérations suivantes :

  • Opération 1 : choisir un tas et en retirer au moins $2$ pierres.
  • Opération 2 : choisir un intervalle de numéros consécutifs $[l,r]$ ($1\le l\le r\le n$) tel que $r-l\ge2$, et retirer exactement $1$ pierre de chacun des tas de cet intervalle.

Vous pouvez effectuer ces deux opérations autant de fois que vous le souhaitez, dans n'importe quel ordre, jusqu'à ce qu'aucune opération ne soit plus possible. Vous gagnez si vous réussissez à retirer toutes les pierres.

Vous avez peut-être déjà commencé à étudier des questions telles que « combien y a-t-il de suites d'opérations essentiellement différentes ? », mais en jouant réellement, vous constatez que vous perdez sans cesse. Vous décidez donc de tricher un peu : au début du jeu, vous cachez $k$ pierres dans votre main. Avant d'effectuer la moindre opération, vous pouvez et devez ajouter toutes ces pierres à un ou plusieurs tas. Vous espérez améliorer ainsi vos chances de gagner, tout en sachant que cela peut aussi vous faire perdre une partie que vous auriez pu gagner.

Vous pouvez maintenant choisir librement une configuration initiale : chaque $a_i$ peut être n'importe quel entier de $[l_i,r_i]$. Calculez le nombre de configurations initiales pour lesquelles il existe au moins une stratégie gagnante. Comme la réponse est très grande, affichez-la modulo $10^9+7$. Deux configurations initiales sont différentes si et seulement s'il existe au moins un $1\le i\le n$ pour lequel leurs valeurs de $a_i$ diffèrent. Attention : une « configuration initiale » désigne ici la configuration avant l'ajout des $k$ pierres.

Entrée

Lisez les données dans le fichier stone.in.

Ce problème comporte plusieurs jeux de données. La première ligne contient un entier positif $T$, leur nombre. Les jeux de données suivent dans l'ordre.

Pour chaque jeu de données, la première ligne contient deux entiers $n,k$, le nombre de tas et le nombre de pierres à ajouter. Chacune des $n$ lignes suivantes contient deux entiers non négatifs $l_i,r_i$, les limites du nombre initial de pierres du tas correspondant.

Sortie

Écrivez la sortie dans le fichier stone.out.

Pour chaque jeu de données, affichez sur une ligne un entier représentant le nombre de configurations permettant de gagner, modulo $10^9+7$.

Exemples

Entrée 1

1
4 1
0 1
0 1
0 1
0 1

Sortie 1

14

Remarque

Il existe $2^4=16$ configurations initiales possibles. On peut montrer que toutes permettent de gagner sauf $(0,0,0,0)$ et $(1,0,0,1)$. Par exemple, à partir de $(1,0,1,0)$, vous pouvez ajouter la pierre de votre main au deuxième tas pour obtenir $(1,1,1,0)$, puis appliquer une fois l'opération 2 à l'intervalle $[1,3]$.

Exemple 2

Voir les fichiers stone/stone2.in et stone/stone2.ans dans le répertoire des candidats.

Exemple 3

Voir les fichiers stone/stone3.in et stone/stone3.ans dans le répertoire des candidats.

Exemple 4

Voir les fichiers stone/stone4.in et stone/stone4.ans dans le répertoire des candidats.

Contraintes

Pour $100\%$ des données, $T\le10$, $3\le n\le1000$, $0\le l_i\le r_i\le10^9$, $0\le k\le100$.

Numéros des tests $n\le$ $k\le$ Conditions particulières
$1\sim3$ $5$ $2$ $r_i\le5$
$4\sim5$ $1000$ $0$ $l_i=r_i$
$6\sim8$ $1000$ $100$ $l_i=r_i$
$9\sim11$ $1000$ $0$ Aucune
$12\sim13$ $1000$ $2$ Aucune
$14\sim15$ $1000$ $100$ $r_i\le10$
$16\sim20$ $1000$ $100$ Aucune

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
#1306EditorialOpenkawaii rainstopqwqGotoHiotoriView

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.