题目传送门
(第一次CF场切绿欸)
题意
考虑将这段序列的平均数设为 \(4n\) ,那么总和就会是 \(4n^2\) ,这时候就需要让最值差等于 \(2n\) ,直接让他等于 \(3n\) 和 \(5n\) 就可以拉, \(3n\) 和 \(5n\) 的平均数也正好是 \(4n\) ,简单分单复数讨论一下就可以了。
AC code
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=3e5+5;
int T,n;
int a[N];
signed main()
{
std::ios::sync_with_stdio(false);
std::cin.tie(NULL);
std::cout.tie(NULL);
cin>>T;
while(T--)
{
cin>>n;
a[1]=3*n;
a[n]=5*n;
if(n==2)
{
cout<<3<<' '<<1<<endl;
continue;
}
if(n%2==0)
{
a[n/2]=4*n-1;
a[n/2+1]=4*n+1;
for(int i=n/2-1;i>1;i--)
a[i]=a[i+1]-1;
for(int i=n/2+2;i<n;i++)
a[i]=a[i-1]+1;
}
else
{
a[n/2+1]=4*n;
for(int i=n/2;i>1;i--)
a[i]=a[i+1]-1;
for(int i=n/2+2;i<n;i++)
a[i]=a[i-1]+1;
}
for(int i=1;i<=n;i++)
cout<<a[i]<<' ';
cout<<endl;
}
return 0;
}
标签:std,int,题解,cin,4n,CF1785D,Range,--
From: https://www.cnblogs.com/Svemit/p/17208069.html