CF1696D.Permutation Graph
普及+/提高
通过率:0%
时间限制:2.00s
内存限制:512MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
A permutation is an array consisting of n distinct integers from 1 to n in arbitrary order. For example, [2,3,1,5,4] is a permutation, but [1,2,2] is not a permutation (2 appears twice in the array) and [1,3,4] is also not a permutation (n=3 but there is 4 in the array).
You are given a permutation of 1,2,…,n, [a1,a2,…,an]. For integers i, j such that 1≤i<j≤n, define mn(i,j) as k=iminjak, and define mx(i,j) as k=imaxjak.
Let us build an undirected graph of n vertices, numbered 1 to n. For every pair of integers 1≤i<j≤n, if mn(i,j)=ai and mx(i,j)=aj both holds, or mn(i,j)=aj and mx(i,j)=ai both holds, add an undirected edge of length 1 between vertices i and j.
In this graph, find the length of the shortest path from vertex 1 to vertex n. We can prove that 1 and n will always be connected via some path, so a shortest path always exists.
排列是指由 1 到 n 的 n 个互不相同的整数组成的数组,顺序任意。例如,[2,3,1,5,4] 是一个排列,但 [1,2,2] 不是排列(数组中数字 2 出现了两次),[1,3,4] 也不是排列(此时 n=3,但数组中出现了 4)。
给定一个 1,2,…,n 的排列 [a1,a2,…,an]。对于满足 1≤i<j≤n 的整数 i,j,定义 mn(i,j)=k=iminjak,并定义 mx(i,j)=k=imaxjak。
我们构造一个包含 n 个顶点(编号为 1 到 n)的无向图。对每一对满足 1≤i<j≤n 的整数 i,j,若同时满足 mn(i,j)=ai 且 mx(i,j)=aj,或同时满足 mn(i,j)=aj 且 mx(i,j)=ai,则在顶点 i 和顶点 j 之间添加一条长度为 1 的无向边。
在此图中,求从顶点 1 到顶点 n 的最短路径长度。可以证明:顶点 1 和顶点 n 总是通过某条路径连通,因此最短路径一定存在。
输入格式
Each test contains multiple test cases. The first line contains the number of test cases t (1≤t≤5⋅104). Description of the test cases follows.
The first line of each test case contains one integer n (1≤n≤2.5⋅105).
The second line of each test case contains n integers a1, a2, …, an (1≤ai≤n). It's guaranteed that a is a permutation of 1, 2, …, n.
It is guaranteed that the sum of n over all test cases does not exceed 5⋅105.
每个测试包含多个测试用例。第一行包含测试用例的数量 t(1≤t≤5⋅104)。随后是各测试用例的描述。
每个测试用例的第一行包含一个整数 n(1≤n≤2.5⋅105)。
每个测试用例的第二行包含 n 个整数 a1, a2, …, an(1≤ai≤n)。保证 a 是 1, 2, …, n 的一个排列。
保证所有测试用例的 n 之和不超过 5⋅105。
输出格式
For each test case, print a single line containing one integer — the length of the shortest path from 1 to n.
对于每个测试用例,输出一行,包含一个整数——从节点 1 到节点 n 的最短路径长度。
输入输出样例
输入#1
5 1 1 2 1 2 5 1 4 2 3 5 5 2 1 5 3 4 10 7 4 8 1 6 10 3 5 2 9
输出#1
0 1 1 4 6
说明/提示
The following are illustrations of constructed graphs in example test cases.
the constructed graph in test case 1
the constructed graph in test case 2
the constructed graph in test case 3
the constructed graph in test case 4
the constructed graph in test case 5
以下是示例测试用例中构造的图的示意图。
测试用例 1 中构造的图
测试用例 2 中构造的图
测试用例 3 中构造的图
测试用例 4 中构造的图
测试用例 5 中构造的图
输入解题思路,AI测评打分。不知道怎么写?