trang chủ / đề bài / thhv23_csa

Đếm dãy

Đề bài

Mô tả

Cho 3 số nguyên dương N,K,M và M bộ tham số: (l1,r1,v1),(l2,r2,v2),…,(lM,rM,vM).

Đếm số lượng dãy A khác nhau, gồm N phần tử số nguyên thỏa mãn:

  • 0≤A[j]<2K với mọi 1≤j≤N.
  • Với mọi 1≤i≤M thì A[li]&A[li+1]&…&A[ri]=vi.

Trong đó & là kí hiệu toán tử AND (AND theo bit).

Dữ liệu vào

  • Dòng đầu tiên gồm ba số nguyên N,K,M (N≤105, K≤30, M≤105).
  • M dòng tiếp theo, dòng thứ i là bộ ba số li, ri và vi (1≤li≤ri≤N; 0≤vi<2K).

Dữ liệu ra

Gồm một dòng duy nhất là kết quả bài toán khi lấy phần dư khi chia cho 1000000007. Hai dãy A và B được coi là khác nhau nếu tồn tại một vị trí i (1≤i≤N) mà Ai≠Bi.

Ràng buộc

  • 1≤N≤105, 1≤K≤30, 1≤M≤105.
  • 1≤li≤ri≤N, 0≤vi<2K.

Subtasks

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

  • Subtask 1 (15% số test): M,N≤10; K≤2.
  • Subtask 2 (15% số test): M,N≤1000 và ri<li+1 với mọi 1≤i<M.
  • Subtask 3 (20% số test): K=1; N,M≤1000.
  • Subtask 4 (20% số test): M,N≤1000.
  • Subtask 5 (30% số test): không có điều kiện gì thêm.

Ví dụ

Input Output Giải thích
4 2 2
1 3 2
3 4 1
3 Có 3 dãy thỏa mãn là {2,2,3,1}, {2,3,3,1}, {3,2,3,1}.
3 2 2
1 2 1
2 2 2
0 Ví dụ bổ sung (không có trong đề gốc). Từ ràng buộc thứ nhất, bit 0 của A[2] phải bằng 1; ràng buộc thứ hai đòi A[2]=2 (bit 0 bằng 0), mâu thuẫn nên không có dãy nào.

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