0%

CF-1030-B. Make It Permutation 

思路讲解

行上面反转,使列上面为排列。

注意到,可以对称的操作,反转1,i,使得 i 为首,再反转N-i+1,N,

1
2
3
4
5
6
7
8
9
10
11
12
13
// 第一阶段操作
// 对行 i = 1 到 n-1, 翻转子数组 [i, n]
for (int i = 1; i < n; ++i) {
std::cout << i << " " << i << " " << n << std::endl;
}

// 第二阶段操作
// 对行 j = 2 到 n, 翻转子数组 [1, j-1]
// 为了让最终矩阵和上面推导的一致,我们倒序循环
for (int i = 1; i < n; ++i) {
// 操作第 n-i+1 行, 翻转 [1, n-i]
std::cout << (n - i + 1) << " " << 1 << " " << (n - i) << std::endl;
}

AC代码

心路历程(WA,TLE,MLE……)