对于序列 a1,a2,…,an,定义相邻绝对差 di=∣ai−ai+1∣(1≤i<n)。
一个连续子序列 al,al+1,…,ar 是 k-平稳的,当且仅当其内部所有相邻绝对差均不超过 k,即:
在序列分析中,我们常需找出波动幅度不超过特定阈值的连续区段。给定一个长度为 n 的整数序列 a1,a2,…,an,定义相邻位置的“绝对差” di=∣ai−ai+1∣(1≤i<n)。对于一个给定的整数 k,若一个连续子序列 al,al+1,…,ar 满足其内部所有相邻绝对差均不超过 k,即 maxl≤i<rdi≤k,则称该子序列是 k-平稳的。注意:单个元素本身总是 k-平稳的。请对于每一个 k=1,2,…,n,计算序列中最长 k-平稳连续子序列的长度。
数据范围:
第一行包含一个整数 T,表示测试数据组数。接下来依次描述每组测试数据,每组数据占两行:第一行包含一个整数 n,表示序列长度;第二行包含 n 个整数 a1,a2,…,an,表示序列中的元素。
对于每组测试数据,输出一行,包含 n 个整数,其中第 i 个整数表示当 k=i 时的最长 k-平稳连续子序列的长度。
输入
1
3
1 2 1
输出
3 3 3
说明
序列长度为 3,元素为 1 2 1。相邻绝对差:d1=∣1−2∣=1,d2=∣2−1∣=1。对于 k=1,所有边权 di≤1,因此并查集将位置 1、2、3 合并为一个连通块,大小为 3。由于 k 增大不会删除边,k=2 和 k=3 时最大连通块仍为 3。故输出 3 3 3。
输入
1
5
1 1 3 3 1
输出
2 5 5 5 5
说明
序列长度为 5,元素为 1 1 3 3 1。相邻绝对差:d1=∣1−1∣=0,d2=∣1−3∣=2,d3=∣3−3∣=0,d4=∣3−1∣=2。边权从小到大排序为 (0,1-2),(0,3-4),(2,2-3),(2,4-5)。
当 k=1 时,加入边权为 0 的两条边:位置 1–2 连通(大小 2),位置 3–4 连通(大小 2)。最大连通块为 2。
当 k=2 时,继续加入边权为 2 的两条边:2–3 和 4–5。此时 1–2–3–4–5 全部连通,大小为 5。k=2,3,4,5 的答案均为 5。故输出 2 5 5 5 5。
输入
1
1
5
输出
1
说明
序列长度为 1,元素为 5。没有相邻边。对于任意 k,最长平稳子序列的长度为单个元素本身,即 1。因此输出 1。
输入
1
6
1 2 4 4 3 6
输出
3 5 6 6 6 6
说明
序列长度为 6,元素为 1 2 4 4 3 6。相邻绝对差:d1=∣1−2∣=1,d2=∣2−4∣=2,d3=∣4−4∣=0,d4=∣4−3∣=1,d5=∣3−6∣=3。边权排序:(0,3-4),(1,1-2),(1,4-5),(2,2-3),(3,5-6)。
1–2(大小 2),3–4–5(大小 3),最大 3。2–3)。1–2–3–4–5 连通,大小 5。5–6),全连通,大小 6。6。故输出 3 5 6 6 6 6。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册