补题 [CF1831A] Twin Permutations

题目描述

You are given a permutation $ ^\dagger $ $ a $ of length $ n $ .

Find any permutation $ b $ of length $ n $ such that $ a_1+b_1 \le a_2+b_2 \le a_3+b_3 \le \ldots \le a_n+b_n $ .

It can be proven that a permutation $ b $ that satisfies the condition above always exists.

$ ^\dagger $ A permutation of length $ n $ 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).

输入格式

Each test contains multiple test cases. The first line of input contains a single integer $ t $ ( $ 1 \le t \le 2000 $ ) — the number of test cases. The description of test cases follows.

The first line of each test case contains a single integer $ n $ ( $ 1 \le n \le 100 $ ) — the length of permutations $ a $ and $ b $ .

The second line of each test case contains $ n $ distinct integers $ a_1,a_2,\ldots,a_n $ ( $ 1 \le a_i \le n $ ) — the elements of permutation $ a $ . All elements of $ a $ are distinct.

Note that there is no bound on the sum of $ n $ over all test cases.

输出格式

For each test case, output any permutation $ b $ which satisfies the constraints mentioned in the statement. It can be proven that a permutation $ b $ that satisfies the condition above always exists.

样例 #1

样例输入 #1

1
2
3
4
5
6
7
8
9
10
11
5
5
1 2 4 5 3
2
1 2
1
1
3
3 2 1
4
1 4 3 2

样例输出 #1

1
2
3
4
5
1 2 4 3 5
2 1
1
1 2 3
1 2 3 4

提示

In the first test case $ a=[1, 2, 4, 5, 3] $ . Then the permutation $ b=[1, 2, 4, 3, 5] $ satisfies the condition because $ 1 + 1 \le 2 + 2 \le 4 + 4 \le 5 + 3 \le 3 + 5 $ .

题解

题目解析

一道构造/脑筋急转弯, $n$ 中数字都不重复,如果我们强行构造

当然就能解决这个问题了.

AC代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <iostream>
#include <cstring>
#include <cmath>
#include <queue>
#include <algorithm>
using namespace std;

#define endl "\n"
#define MAXN(size) const long long MAXN = size + 100
#define var(size) int p[size]{}
#define mem(name,value) memset(name,value,sizeof(name))
#define fora(a,n,p) for(int i=a;i<=n;i+=p)
#define cin(length,var) for(int i=1;i<=length;i++) cin >> var[i]

typedef long long ll;

MAXN(100);
var(MAXN);

int main(){
int T;
cin >> T;
while(T--){
int n;
cin >> n;
cin(n,p);
fora(1,n,1){
cout << n + 1 - p[i] << " ";
}
cout << endl;
}
return 0;
}