CF1490D.Permutation Transformation
普及-
通过率:0%
时间限制:2.00s
内存限制:256MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
A permutation — is a sequence of length n integers from 1 to n, in which all the numbers occur exactly once. For example, [1], [3,5,2,1,4], [1,3,2] — permutations, and [2,3,2], [4,3,1], [0] — no.
Polycarp was recently gifted a permutation a[1…n] of length n. Polycarp likes trees more than permutations, so he wants to transform permutation a into a rooted binary tree. He transforms an array of different integers into a tree as follows:
- the maximum element of the array becomes the root of the tree;
- all elements to the left of the maximum — form a left subtree (which is built according to the same rules but applied to the left part of the array), but if there are no elements to the left of the maximum, then the root has no left child;
- all elements to the right of the maximum — form a right subtree (which is built according to the same rules but applied to the right side of the array), but if there are no elements to the right of the maximum, then the root has no right child.
For example, if he builds a tree by permutation a=[3,5,2,1,4], then the root will be the element a2=5, and the left subtree will be the tree that will be built for the subarray a[1…1]=[3], and the right one — for the subarray a[3…5]=[2,1,4]. As a result, the following tree will be built:
The tree corresponding to the permutation a=[3,5,2,1,4].
Another example: let the permutation be a=[1,3,2,7,5,6,4]. In this case, the tree looks like this:
The tree corresponding to the permutation a=[1,3,2,7,5,6,4].
Let us denote by dv the depth of the vertex av, that is, the number of edges on the path from the root to the vertex numbered av. Note that the root depth is zero. Given the permutation a, for each vertex, find the value of dv.
排列——是指由 1 到 n 的 n 个整数构成的长度为 n 的序列,其中每个数字恰好出现一次。例如,[1]、[3,5,2,1,4]、[1,3,2] 是排列,而 [2,3,2]、[4,3,1]、[0] 不是。
波利卡普最近获赠了一个长度为 n 的排列 a[1…n]。波利卡普更喜欢树而非排列,因此他希望将排列 a 转换为一棵有根二叉树。他将一组互不相同的整数数组转换为树的方式如下:
- 数组中的最大元素成为树的根;
- 位于最大元素左侧的所有元素——构成左子树(该子树按相同规则递归构建,即对数组的左半部分应用该规则);若最大元素左侧无任何元素,则根节点没有左子节点;
- 位于最大元素右侧的所有元素——构成右子树(该子树按相同规则递归构建,即对数组的右半部分应用该规则);若最大元素右侧无任何元素,则根节点没有右子节点。
例如,若按排列 a=[3,5,2,1,4] 构建树,则根节点为元素 a2=5,左子树由子数组 a[1…1]=[3] 构建,右子树由子数组 a[3…5]=[2,1,4] 构建。最终构建出如下树:
与排列 a=[3,5,2,1,4] 对应的树。
另一个例子:设排列为 a=[1,3,2,7,5,6,4]。此时,树的结构如下:
与排列 a=[1,3,2,7,5,6,4] 对应的树。
记 dv 为顶点 av 的深度,即从根节点到编号为 av 的顶点的路径上的边数。注意:根节点的深度为 0。给定排列 a,请对每个顶点求出 dv 的值。
输入格式
The first line contains one integer t (1≤t≤100) — the number of test cases. Then t test cases follow.
The first line of each test case contains an integer n (1≤n≤100) — the length of the permutation.
This is followed by n numbers a1,a2,…,an — permutation a.
第一行包含一个整数 t(1≤t≤100)—— 测试用例的数量。随后是 t 个测试用例。
每个测试用例的第一行包含一个整数 n(1≤n≤100)—— 排列的长度。
接下来是 n 个数 a1,a2,…,an —— 排列 a。
输出格式
For each test case, output n values — d1,d2,…,dn.
对于每个测试用例,输出 n 个值 — d1,d2,…,dn。
输入输出样例
输入#1
3 5 3 5 2 1 4 1 1 4 4 3 1 2
输出#1
1 0 2 3 1 0 0 1 3 2
输入解题思路,AI测评打分。不知道怎么写?