专栏文章

题解:P12373 「LAOI-12」命运。

P12373题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@miphbtix
此快照首次捕获于
2025/12/03 12:00
3 个月前
此快照最后确认于
2025/12/03 12:00
3 个月前
查看原文

思路

先拆式子: i=1n1i2=12+22++n2=n2++22+11\begin{aligned} \sum\limits_{i=1}^{n-1}i^2 = 1^2+2^2+\cdots+n^2 \\ = n^2+\cdots+2^2+1^1 \end{aligned} 再依据题意构造,使第 ii 个数与第 i+1i+1 个数的方差为 (ni)2(n-i)^2 即可。
因此我们可以构造这样一个序列:
  • nn 为偶数: n,1,n1,2,n2,3,,n2+1,n21n,1,n-1,2,n-2,3,\cdots,\frac{n}2+1,\frac{n}2-1
  • nn 为奇数: n,1,n1,2,n2,3,,n21,n2+1n,1,n-1,2,n-2,3,\cdots,\frac{n}2-1,\frac{n}2+1

代码

CPP
#include <bits/stdc++.h>
using namespace std;
int T;
vector<int> ans;
int n;

int main() {
	scanf("%d", &T);
	while (T--) {
		ans.clear();
		cin >> n;
		ans.push_back(n);
		int l = 1, r = n - 1;
		bool flag = true;
		while (l <= r) {
			if (flag) {
				ans.push_back(l);
				l++;
			} else {
				ans.push_back(r);
				r--;
			}
			flag = !flag;
		}
		for (int x : ans) {
			printf("%d ", x);
		}
		puts("");
	}

	return 0;
}

评论

0 条评论,欢迎与作者交流。

正在加载评论...