QOJ.ac

QOJ

Time Limit: 0.25 s Memory Limit: 256 MB Total points: 100

#10141. AA Tree

Statistics

Un arbore AA este un arbore binar de căutare cu o structură specială. Fiecărui nod îi sunt atribuite o valoare și un nivel. Valorile îndeplinesc proprietățile obișnuite ale arborilor binari de căutare:

  1. Valoarea fiecărui fiu stâng (și a nodurilor din subarborele fiului stâng) este mai mică sau egală ca cea a tatălui său.
  2. Valoarea fiecărui fiu drept (și a nodurilor din subarborele fiului drept) este mai mare sau egală cu valoarea tatălui său.

Nivelele respectă următoarele reguli:

  1. Nivelul fiecărui nod frunză este $1$.
  2. Nivelul fiecărui fiu stâng este exact cu unu mai mic decât cel al tatălui său.
  3. Nivelul fiecărui fiu drept este egal sau cu unu mai mic decât cel al tatălui său.
  4. Nivelul fiecărui nepot drept este strict mai mic decât cel al bunicului său.
  5. Fiecare nod de nivel mai mare strict ca unu are exact doi fii.

Mai jos găsiți cinci exemple de arbori AA, având $3$, $5$, $5$, $11$ și $11$ noduri. Pentru claritate, fiii drepți pe același nivel cu tații lor sunt colorați cu roșu.

problem_10141_1.png

Cerință

Date fiind două numere $N$ și $L$, câte moduri sunt de a aranja valorile $1$, $2$, ..., $N$ într-un arbore AA astfel încât acesta are fix $L$ nivele?

Date de intrare

Singura linie a datelor de intrare va conține numerele întregi $N$ și $L$ separate printr-un spațiu.

Date de ieșire

Afișați numărul de aranjări modulo $10^9 + 7$.

Restricții și precizări

  • Enunțul problemei este puțin modificat din cauza unei erori în definiția arborilor binari de căutare în enunțul original al problemei.
  • $1 \leq L \leq 9$
  • $1 \leq N \leq 10 \ 000$
# Punctaj Restricții
0 0 Exemplele
1 19 $L \leq 4$
2 34 $5 \leq L \leq 7$
3 47 Fără restricții suplimentare

Exemplul 1

stdin

5 2

stdout

2

Explicație

Cele două posibile aranjări sunt arătate în imaginile $2$ și $3$ de mai sus.

Exemplul 2

stdin

442 6

stdout

896944318

Exemplul 3

stdin

7133 9

stdout

980381648
About Issues

We understand that our problem archive is not perfect. If you find any issues with the problem, including the statement, scoring configuration, time/memory limits, test cases, etc.

You may use this form to submit an issue regarding the problem. A problem moderator will review your issue and proceed it properly.

STOP! Before you submit an issue, please READ the following guidelines:

  1. This is not a place to publish a discussion, editorial, or requests to debug your code. Your issue will only be visible by you and problem moderators. Other users will not be able to view or reply your issues.
  2. Do not submit duplicated issues. If you have already submitted one, please wait for an moderator to review it. Submitting multiple issues will not speed up the review process and might cause your account to be banned.
  3. Issues must be filed in English or Chinese only.
  4. Be sure your issue is related to this problem. If you need to submit an issue regarding another problem, contest, category, etc., you should submit it to the corresponding page.

Active Issues 0

No issues in this category.

Closed/Resolved Issues 0

No issues in this category.