QOJ.ac

QOJ

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

#4658. Usuwanie kamieni

Statistics

Grasz w niewielką grę o nazwie „Usuwanie kamieni”.

W rzędzie znajduje się $n$ stosów kamieni; na $i$-tym stosie jest $a_i$ kamieni. Twoim zadaniem jest usunąć wszystkie kamienie za pomocą następujących operacji:

  • Operacja pierwsza: wybierz jeden stos i usuń z niego co najmniej $2$ kamienie.
  • Operacja druga: wybierz przedział kolejnych indeksów $[l,r]$ ($1\le l\le r\le n$) spełniający $r-l\ge2$ i usuń dokładnie $1$ kamień z każdego stosu w tym przedziale.

Możesz wykonywać obie operacje w dowolnej kolejności dowolną liczbę razy, aż żadnej z nich nie da się już wykonać. Wygrywasz, jeśli ostatecznie usuniesz wszystkie kamienie.

Być może zacząłeś już obliczać takie rzeczy jak „liczba zasadniczo różnych sposobów wykonywania operacji”, ale podczas gry zauważasz, że ciągle przegrywasz. Postanawiasz więc zastosować małą sztuczkę: na początku gry potajemnie trzymasz w dłoni $k$ kamieni. Przed wykonaniem jakiejkolwiek operacji możesz i musisz dołożyć wszystkie te kamienie do jednego lub kilku stosów. Liczysz na zwiększenie szans na wygraną, ale zdajesz sobie sprawę, że może to również zepsuć pozycję, z której wcześniej dało się wygrać.

Teraz możesz dowolnie wybrać pozycję początkową: każde $a_i$ może być dowolną liczbą całkowitą z przedziału $[l_i,r_i]$. Oblicz, dla ilu pozycji początkowych istnieje co najmniej jeden sposób wygrania. Ponieważ wynik jest duży, wypisz go modulo $(10^9+7)$. Dwie pozycje początkowe są różne wtedy i tylko wtedy, gdy dla co najmniej jednego $1\le i\le n$ mają różne wartości $a_i$. Zwróć uwagę, że „pozycja początkowa” oznacza pozycję przed dołożeniem $k$ kamieni.

Wejście

Dane należy wczytać z pliku stone.in.

Wejście zawiera wiele zestawów danych. Pierwszy wiersz zawiera dodatnią liczbę całkowitą $T$, oznaczającą ich liczbę. Dalej podane są kolejno wszystkie zestawy.

Dla każdego zestawu pierwszy wiersz zawiera dwie liczby całkowite $n,k$, oznaczające odpowiednio liczbę stosów oraz liczbę dokładanych kamieni. Następne $n$ wierszy zawiera po dwie nieujemne liczby całkowite $l_i,r_i$, określające zakres początkowej liczby kamieni na danym stosie.

Wyjście

Wynik należy zapisać do pliku stone.out.

Dla każdego zestawu wypisz w osobnym wierszu jedną liczbę całkowitą: liczbę pozycji, z których można wygrać, modulo $(10^9+7)$.

Przykład

Wejście 1

1
4 1
0 1
0 1
0 1
0 1

Wyjście 1

14

Uwagi

Istnieje $2^4=16$ możliwych pozycji początkowych. Można wykazać, że z każdej poza $(0\ 0\ 0\ 0)$ i $(1\ 0\ 0\ 1)$ da się wygrać. Na przykład dla pozycji $(1\ 0\ 1\ 0)$ możesz dołożyć trzymany w dłoni $1$ kamień do drugiego stosu, uzyskując $(1\ 1\ 1\ 0)$, a następnie wykonać operację drugą na przedziale $[1,3]$.

Przykład 2

Zobacz pliki stone/stone2.in i stone/stone2.ans w katalogu zawodnika.

Przykład 3

Zobacz pliki stone/stone3.in i stone/stone3.ans w katalogu zawodnika.

Przykład 4

Zobacz pliki stone/stone4.in i stone/stone4.ans w katalogu zawodnika.

Ograniczenia

Dla $100\%$ danych zachodzi $T\le10$, $3\le n\le1000$, $0\le l_i\le r_i\le10^9$, $0\le k\le100$.

Numery testów $n\le$ $k\le$ Warunek szczególny
$1\sim3$ $5$ $2$ $r_i\le5$
$4\sim5$ $1000$ $0$ $l_i=r_i$
$6\sim8$ $100$
$9\sim11$ $0$ Brak
$12\sim13$ $2$
$14\sim15$ $100$ $r_i\le10$
$16\sim20$ Brak

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.