题目描述
https://codeforces.com/contest/1430/problem/C
Solution
首先能够确定答案最小为 $2$,然后我们尝试构造出 $2$
我们先把 $n$ 和 $n-1$ 合并得到 $n$,然后 $n$ 和 $n-2$ 合并得到 $n-1$,然后 $n-1$ 和 $n-3$ 合并得到 $n-2$,依次操作
最后能够得到 $2$
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| #include <iostream> #include <cstdio> #define maxn 200010 using namespace std;
int n, m;
void work() { cin >> n; printf("2\n%d %d\n", n, n - 1); for (int i = n - 2; i; --i) cout << i << " " << i + 2 << endl; }
int main() { int T; cin >> T; while (T--) work(); return 0; }
|