题意:
构造出一个长度为
的序列使得这个序列的全部区间和最小。
其实光看样例也可以猜到。
可以这样考虑:
一个序列
中越靠近中间的数对
的贡献越大。
为了使
最大,需要让越大的数尽可能靠近中间,亦即越小的数越靠近两侧。
将奇数和偶数分开,分别从两侧往中间从小到大放置即可。
AC代码:
int n;
int ans, res, tmp;
int main()
{
sd(n);
int i;
for (i = 1; i <= n; i += 2)
printf("%d ", i);
if (n & 1)
i = n - 1;
else
i = n;
for (i; i >= 1; i -= 2)
printf("%d ", i);
return 0;
}