Dãy Lipschitz

Đề bài

Mô tả

Với một dãy số nguyên a[1..m], ta định nghĩa hằng số Lipschitz L(a) như sau:

  • Nếu m<2 thì L(a)=0.
  • Nếu m≥2 thì L(a) là số nguyên không âm nhỏ nhất sao cho |a[i]−a[j]|≤L(a)·|i−j| với mọi 1≤i,j≤m.

Cho một dãy h gồm n phần tử và q truy vấn dạng [l,r]. Với mỗi truy vấn, xét dãy con liên tiếp h[l],h[l+1],…,h[r]; hãy tính tổng hằng số Lipschitz của tất cả các dãy con liên tiếp của dãy đó.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên n và q.
  • Dòng thứ hai chứa n số nguyên h[1],h[2],…,h[n].
  • q dòng tiếp theo, mỗi dòng chứa hai số nguyên li và ri mô tả một truy vấn.

Dữ liệu ra

Với mỗi truy vấn, in ra một dòng chứa một số nguyên là tổng hằng số Lipschitz của tất cả các dãy con liên tiếp của h[li..ri].

Ràng buộc

  • 2≤n≤105
  • 1≤q≤100
  • 0≤h[i]≤108
  • 1≤li<ri≤n

Ví dụ

Input Output Giải thích
10 4
1 5 2 9 1 3 4 2 1 7
2 4
3 8
7 10
1 9
17
82
23
210
Với truy vấn đầu [2,4], dãy con là [5,2,9]. Các dãy con liên tiếp độ dài ≥2 là [5,2] (Lipschitz 3), [2,9] (Lipschitz 7), [5,2,9] (Lipschitz 7). Tổng =3+7+7=17.
7 6
5 7 7 4 6 6 2
1 2
2 3
2 6
1 7
4 7
3 5
2
0
22
59
16
8
Truy vấn [2,3] ứng với dãy [7,7]: dãy con duy nhất độ dài ≥2 có hằng số Lipschitz bằng 0.

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