Phản Vật Chất

Đề bài

Mô tả

Cho dãy N số nguyên dương a1,a2,,aN. Với mỗi phần tử ta có thể chọn dấu cộng (+ai) hoặc dấu trừ (ai).

Hãy đếm số cách chọn một đoạn con liên tiếp al,al+1,,ar (1lrN) cùng với một cách gán dấu cho từng phần tử của đoạn sao cho tổng có dấu bằng 0.

Hai cách được coi là khác nhau nếu chúng có đoạn [l,r] khác nhau, hoặc tồn tại ít nhất một vị trí trong đoạn được gán dấu khác nhau.

In kết quả theo modulo 109+7.

Dữ liệu vào

  • Dòng đầu chứa số nguyên N.
  • Dòng thứ hai chứa N số nguyên a1,a2,,aN.

Dữ liệu ra

  • Một số nguyên duy nhất là số cách đếm được, lấy dư cho 109+7.

Ràng buộc

  • 1N1000
  • 1ai1000
  • a1+a2++aN10000

Ví dụ

Input Output Giải thích
4
1 1 1 1
12 Các cách hợp lệ gồm 6 cặp kề nhau (mỗi cặp chọn được 2 kiểu dấu) và 6 bộ 4 phần tử với cách gán dấu để có tổng bằng 0.
3
1 2 4
0 Không có đoạn con nào cùng cách gán dấu mà tổng có dấu bằng 0.
2
1000 1000
2 Đoạn [1,2] có hai cách gán dấu cho tổng bằng 0: +100010001000+1000.

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.400 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.2 gforth 0.7.3 gfortran 12.2.0 go 1.27.0 groovyc 5.1.1 javac 25.0.4 node 26.8.1 julia 1.12.7 kotlinc 2.4.10 lean 4.33.1 sbcl 2.2.9 lua 5.4.9 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.10 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.14.7 racket 8.7 ruby 4.0.6 rustc 1.98.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.3.3 tclsh 8.6 bun 1.4.0 deno 2.9.6 v 0.5.2 zig 0.16.0