跳到主要内容

P4676. 守望塔对

场次:2026年3月28日-开发岗 · 来源:CodeFun2000 P4676

题目描述​

你是一名通信工程师,正在部署一排线性的守望塔。共有 nn 座守望塔,从西到东依次编号为 11 到 nn。第 ii 座塔的高度记为 hih_i。

对于两座塔 ii 和 jj(1≤i<j≤n1 \le i < j \le n),如果它们的高度之和大于它们之间所有塔(包括 ii 和 jj)的最高高度,即满足

hi+hj>max⁡i≤k≤jhkh_i + h_j > \max_{i \le k \le j} h_k

则称这一对塔可以互相通信。请统计所有可以互相通信的塔对 (i,j)(i, j) 的数量。

数据范围:塔的数量 nn 满足 1≤n≤1051 \le n \le 10^5,每座塔的高度 hih_i 满足 1≤hi≤1061 \le h_i \le 10^6。

输入格式​

第一行输入一个整数 nn,表示塔的数量。 第二行输入 nn 个整数 h1,h2,…,hnh_1, h_2, \dots, h_n,依次表示每座塔的高度。

输出格式​

输出一个整数,表示可以互相通信的塔对的数量。

示例​

示例 1​

输入:

1
5

输出:

0

说明:

当只有一座塔时,不存在编号 i<ji < j 的两座塔,因此无法形成任何塔对,答案为 0。

示例 2​

输入:

2
1 2

输出:

1

说明:

唯一的一对是 (1,2)(1,2)。h1+h2=1+2=3h_1 + h_2 = 1 + 2 = 3,区间最大值为 max⁡(1,2)=2\max(1,2) = 2。由于 3>23 > 2,该对满足条件,总数为 1。

示例 3​

输入:

3
1 5 2

输出:

2

说明:

三座塔的可能对:

  • 对 (1,2)(1,2):1+5=6>max⁡(1,5)=51+5=6 > \max(1,5)=5,满足。
  • 对 (2,3)(2,3):5+2=7>max⁡(5,2)=55+2=7 > \max(5,2)=5,满足。
  • 对 (1,3)(1,3):1+2=3≤max⁡(1,5,2)=51+2=3 \le \max(1,5,2)=5,不满足。 所以共有 2 对满足条件。

示例 4​

输入:

4
5 1 3 2

输出:

5

说明:

所有对的分析:

  • (1,2)(1,2): 5+1=6>max⁡(5,1)=55+1=6 > \max(5,1)=5,满足。
  • (1,3)(1,3): 5+3=8>max⁡(5,1,3)=55+3=8 > \max(5,1,3)=5,满足。
  • (1,4)(1,4): 5+2=7>max⁡(5,1,3,2)=55+2=7 > \max(5,1,3,2)=5,满足。
  • (2,3)(2,3): 1+3=4>max⁡(1,3)=31+3=4 > \max(1,3)=3,满足。
  • (2,4)(2,4): 1+2=3≤max⁡(1,3,2)=31+2=3 \le \max(1,3,2)=3,不满足。
  • (3,4)(3,4): 3+2=5>max⁡(3,2)=33+2=5 > \max(3,2)=3,满足。 满足的对为除了 (2,4)(2,4) 以外的 5 对。
加载评论中...