trang chủ / đề bài / dhbb22_lisys

Thiết kế hệ thống đèn

Đề bài

Mô tả

Để trang trí hội trường cho buổi khai mạc Duyên Hải năm 2022, Ban tổ chức đã sử dụng n đèn, nếu coi mỗi đèn là một đỉnh của đồ thị và dây nối giữa các đèn là cạnh thì hệ thống đèn tương ứng như một cây. Ban tổ chức đã ghi chép lại dãy các thông tin b1,b2,…,bn, trong đó bi (1≤i≤n) tương ứng là số dây nối với đèn thứ i, hay nói một cách khác bi là bậc của đỉnh i. Vì một lí do nào đó, Ban tổ chức đã vô tình làm mất thông tin của một số phần tử trong dãy thông tin b1,b2,…,bn. Để khôi phục lại các thông tin, Ban tổ chức đã nhờ đến Đào Quang Thái Dương (là cựu học sinh Chuyên Trần Phú, Huy chương Đồng APIO 2020). Rất nhanh chóng, Dương đã đếm được số lượng cách khác nhau điền thông tin vào các phần tử bị khuyết để nhận được dãy vẫn là dãy bậc của một cây nào đó.

Dãy d1,d2,…,dn là dãy bậc của một cây nếu tồn tại một cây gồm n đỉnh đánh số từ 1 đến n mà đỉnh i có bậc đúng bằng di với mọi i. Hai cách điền được coi là khác nhau nếu có ít nhất một vị trí bị khuyết được điền hai giá trị khác nhau. Nếu không có phần tử nào bị khuyết thì có 1 cách điền (không điền gì) khi dãy đã cho là dãy bậc của một cây, ngược lại có 0 cách.

Yêu cầu: Gọi s là số lượng cách điền thỏa mãn, hãy tính smod(109+7).

Dữ liệu vào

  • Dòng đầu chứa số nguyên dương n;
  • Dòng thứ hai chứa n số nguyên b1,b2,…,bn, trong đó 1≤bi≤n−1 hoặc bi=−1 cho biết thông tin đỉnh i bị mất.

Dữ liệu ra

In ra một số nguyên là giá trị smod(109+7).

Ràng buộc

  • 2≤n≤106.
  • 1≤bi≤n−1 hoặc bi=−1.

Subtasks

Điểm được tính theo từng test.

  • Có 20% số lượng test ứng với 20% số điểm thỏa mãn: n≤6.
  • Có 20% số lượng test khác ứng với 20% số điểm thỏa mãn: n≤10.
  • Có 20% số lượng test khác ứng với 20% số điểm thỏa mãn: n≤100.
  • Có 20% số lượng test khác ứng với 20% số điểm thỏa mãn: n≤104.
  • Có 20% số lượng test còn lại ứng với 20% số điểm thỏa mãn: n≤106.

Ví dụ

Input Output Giải thích
3
-1 -1 1
2 Có hai cách điền thông tin: cách 1 là 1 2 1, cách 2 là 2 1 1.
5
-1 3 -1 -1 -1
4 Ví dụ bổ sung (không có trong đề gốc). Đỉnh 2 có bậc 3; trong bốn đỉnh còn lại có đúng một đỉnh bậc 2 và ba đỉnh bậc 1, chọn đỉnh bậc 2 có 4 cách, ví dụ 2 3 1 1 1.
4
2 2 2 2
0 Ví dụ bổ sung (không có trong đề gốc). Không có phần tử nào bị khuyết, nhưng một cây 4 đỉnh có đúng 3 cạnh nên tổng các bậc phải bằng 6, còn ở đây tổng bằng 8.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0