QOJ.ac

QOJ

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

#4658. إزالة الحصى

Statistics

أنت تلعب لعبة صغيرة تسمى «إزالة الحصى».

هناك $n$ كومة من الحصى مصطفة في صف، وتحتوي الكومة رقم $i$ على $a_i$ حصاة. مهمتك هي إزالة جميع الحصى باستخدام العمليتين التاليتين:

  • العملية الأولى: اختر كومة واحدة، وأزل منها حصاتين على الأقل.
  • العملية الثانية: اختر مجالًا متصلًا من أرقام الكومات $[l,r]$، حيث $1\leq l\leq r\leq n$ و$r-l\geq 2$، وأزل حصاة واحدة بالضبط من كل كومة في هذا المجال.

يمكنك تنفيذ هاتين العمليتين بأي ترتيب وأي عدد من المرات، حتى يتعذر تنفيذ أي عملية أخرى. وتفوز إذا تمكنت في النهاية من إزالة جميع الحصى.

ربما بدأت بالفعل في حساب أمور مثل «كم عدد طرق تنفيذ العمليات المختلفة جوهريًا؟»، لكنك تجد أثناء اللعب أنك تخسر دائمًا. لذلك تقرر اللجوء إلى حيلة صغيرة: عند بدء اللعبة، تخفي $k$ حصاة في يدك، وقبل تنفيذ أي عملية، يمكنك ويجب عليك وضع هذه الحصى في كومة واحدة أو عدة كومات. وتأمل أن يزيد ذلك من فرص فوزك، لكنك تدرك أيضًا أنه قد يجعلك تخسر لعبة كان من الممكن الفوز بها أصلًا.

يمكنك الآن اختيار وضع ابتدائي بحرية للعب، وتحديدًا، يمكن اختيار كل $a_i$ ليكون أي عدد صحيح في المجال $[l_i,r_i]$. تريد حساب عدد الأوضاع الابتدائية التي توجد فيها طريقة واحدة على الأقل للفوز. ولأن الإجابة كبيرة، فلا يلزمك إلا إخراج باقي قسمتها على $(10^9+7)$. يختلف وضعان ابتدائيان إذا وفقط إذا وجد $i$ واحد على الأقل يحقق $1\leq i\leq n$ وتختلف قيمة $a_i$ بينهما. انتبه إلى أن «الوضع الابتدائي» هنا يعني الوضع قبل وضع الحصى $k$.

الإدخال

اقرأ البيانات من الملف stone.in.

تحتوي هذه المسألة على عدة حالات اختبار. يحتوي السطر الأول على عدد صحيح موجب $T$ يمثل عدد حالات الاختبار، ثم تُعطى الحالات بالترتيب.

لكل حالة اختبار، يحتوي السطر الأول على عددين صحيحين $n,k$، يمثلان عدد كومات الحصى وعدد الحصى المضافة على التوالي. تحتوي الأسطر $n$ التالية على عددين صحيحين غير سالبين $l_i,r_i$ في كل سطر، يمثلان مجال العدد الابتدائي من الحصى في كل كومة.

الإخراج

اكتب الإخراج إلى الملف stone.out.

لكل حالة اختبار، أخرج في سطر واحد عددًا صحيحًا واحدًا يمثل عدد الأوضاع التي يمكن الفوز بها، بترديد $(10^9+7)$.

أمثلة

الإدخال 1

1
4 1
0 1
0 1
0 1
0 1

الإخراج 1

14

ملاحظة

يوجد $2^4=16$ وضعًا ابتدائيًا ممكنًا. ويمكن إثبات أن جميع الأوضاع الابتدائية لها طريقة للفوز، باستثناء الوضعين $(0\ 0\ 0\ 0)$ و$(1\ 0\ 0\ 1)$ اللذين يتعذر الفوز بهما. فمثلًا، إذا كان الوضع الابتدائي $(1\ 0\ 1\ 0)$، يمكنك وضع الحصاة الواحدة التي في يدك في الكومة الثانية، ليصبح الوضع $(1\ 1\ 1\ 0)$، ثم تنفيذ العملية الثانية مرة واحدة على المجال $[1,3]$.

مثال 2

راجع الملفين stone/stone2.in وstone/stone2.ans في دليل المتسابق.

مثال 3

راجع الملفين stone/stone3.in وstone/stone3.ans في دليل المتسابق.

مثال 4

راجع الملفين stone/stone4.in وstone/stone4.ans في دليل المتسابق.

القيود

في $100\%$ من البيانات، يُضمن أن $T\leq 10$، و$3\leq n\leq 1000$، و$0\leq l_i\leq r_i\leq 10^9$، و$0\leq k\leq 100$.

أرقام حالات الاختبار $n\leq$ $k\leq$ شروط خاصة
$1\sim 3$ $5$ $2$ $r_i\leq 5$
$4\sim 5$ $1000$ $0$ $l_i=r_i$
$6\sim 8$ $100$
$9\sim 11$ $0$ لا شيء
$12\sim 13$ $2$
$14\sim 15$ $100$ $r_i\leq 10$
$16\sim 20$ لا شيء

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.