trang chủ / đề bài / okabewalk

Okabe đi dạo

Đề bài

Mô tả

Okabe đi dạo trong thành phố, được mô hình hoá bằng tất cả các điểm (x,y) với x,y nguyên không âm.

Okabe xuất phát từ gốc toạ độ (0,0) và muốn đến điểm (k,0). Nếu đang đứng ở (x,y), trong một bước anh có thể đi đến (x+1,y+1), (x+1,y) hoặc (x+1,y−1).

Ngoài ra, có n đoạn thẳng nằm ngang. Đoạn thứ i trải từ x=ai đến x=bi (bao gồm hai đầu mút) và nằm ở độ cao y=ci. Đoạn thứ i buộc Okabe phải giữ 0≤y≤ci tại mọi vị trí có hoành độ x thoả mãn ai≤x≤bi.

Dữ liệu đảm bảo a1=0, an≤k≤bn và ai=bi−1 với mọi 2≤i≤n. Điều này có nghĩa là tại điểm nối giữa hai đoạn liên tiếp, Okabe phải đồng thời thoả mãn ràng buộc của cả hai đoạn.

Hãy đếm số cách đi khác nhau từ (0,0) đến (k,0) thoả mãn các điều kiện trên, lấy phần dư khi chia cho 109+7.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên n và k.
  • n dòng tiếp theo, dòng thứ i chứa ba số nguyên ai, bi, ci.

Dữ liệu ra

Một số nguyên duy nhất: số cách đi thoả mãn, lấy phần dư cho 109+7.

Ràng buộc

  • 1≤n≤100
  • 1≤k≤1018
  • 0≤ai<bi≤1018
  • 0≤ci≤15
  • a1=0, an≤k≤bn, và ai=bi−1 với 2≤i≤n

Ví dụ

Input Output Giải thích
2 6
0 3 0
3 10 2
4 Trên đoạn 0≤x≤3 trần là c=0 nên Okabe buộc phải đi thẳng, chỉ có 1 cách đến (3,0). Từ x=3 đến x=6 trần là c=2, và có 4 cách đi từ (3,0) về (6,0).
1 3
0 3 3
4 Trần c=3 đủ cao nên không hạn chế gì trên quãng đường dài 3. Bốn cách đi từ (0,0) về (3,0) là: giữ nguyên ba bước; lên rồi xuống rồi giữ; lên rồi giữ rồi xuống; giữ rồi lên rồi xuống.

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