QOJ.ac

QOJ

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

#10141. AA Tree

統計

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

Discussions

About Discussions

The discussion section is only for posting: Editorials, 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. Submitting multiple issues may cause your account to be banned.
  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.