题解:CF2118B Make It Permutation
Tonio_Trussardi · · 题解
简单找规律题
大体思路
首先我们可以发现,对于第 i 1 i 和一次 i i+1 n(若
证明
可以发现,先进行操作,我们如果只看对角线左下方的三角形,那么会得到如此图形:
我们可以发现第
那么通过这个想法我们就可以把右上角剩下的三角形向右"平移一位",例如
那么此时我们可以考虑答案 i i+1 n 可以做到的,那么接下来还有第 i 1 i 操作对应,所以我们一定可以使用这种操作完成任务。
代码
#include<bits/stdc++.h>
using namespace std;
int T;
int main(){
cin>>T;
while(T--){
int n;
cin>>n;
cout<<2*n-1<<endl;
for(int i=1;i<=n;++i){
if(i<n)
cout<<i<<" "<<i+1<<" "<<n<<endl;
cout<<i<<" "<<1<<" "<<i<<endl;
}
}
return 0;
}