Dãy con Manhattan

Đề bài

Mô tả

Cho hai điểm p=(xp,yp)q=(xq,yq) trên mặt phẳng. Khoảng cách Manhattan giữa chúng được định nghĩa là:

d(p,q)=|xpxq|+|ypyq|.

Ba điểm p, q, r tạo thành một bộ ba xấu nếu d(p,r)=d(p,q)+d(q,r).

Một dãy b1,b2,,bm được gọi là tốt nếu không tồn tại ba chỉ số phân biệt i,j,k sao cho ba điểm (bi,i), (bj,j), (bk,k) tạo thành một bộ ba xấu. Theo định nghĩa, mọi dãy có độ dài 1 hoặc 2 đều tốt.

Cho dãy a1,a2,,an. Hãy đếm số dãy con liên tiếp tốt của a. Một dãy con liên tiếp là dãy có dạng al,al+1,,ar với 1lrn.

Dữ liệu vào

  • Dòng đầu chứa một số nguyên t (1t5000) — số bộ test.
  • Mỗi bộ test gồm:
    • Dòng đầu: số nguyên n (1n2·105) — độ dài dãy.
    • Dòng thứ hai: n số nguyên a1,a2,,an (1ai109).

Tổng giá trị n qua tất cả bộ test không vượt quá 2·105.

Dữ liệu ra

Với mỗi bộ test, in ra một số nguyên là số dãy con liên tiếp tốt của a.

Ràng buộc

  • 1t5000
  • 1n2·105
  • 1ai109
  • Tổng n qua các bộ test 2·105.

Ví dụ

Input Output Giải thích
3
4
2 4 1 3
5
6 9 1 9 6
2
13 37
10
12
3
Test 1: mọi dãy con liên tiếp của [2,4,1,3] đều tốt — tổng cộng có 4+3+2+1=10 dãy con.
Test 2: trong dãy [6,9,1,9,6], dãy con [a1,a2,a3,a4] chứa bộ ba xấu (a1,1), (a2,2), (a4,4)d((6,1),(9,4))=6=d((6,1),(9,2))+d((9,2),(9,4)).
Test 3: dãy có độ dài 2 nên cả 3 dãy con (hai độ dài 1 và một độ dài 2) đều tốt.

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.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0