题解 CF1785D - Range = √Sum

link

Describe

构造有 n 个数的序列,满足以下条件:

  • i[1,n] 并且 1ai109

  • 对于任何的 1i,jn(ij)aiaj

  • (maxi=1naimini=1nai)2=i=1nai

Solution

显然构造题。

我们假设ai4n2,则 maxaiminai=2n

显然最简单的序列是 1,2,,n1,2n+1​,然后我们考虑如何使他接近合法。

我们记 s11+2++(n1)+(2n+1)

我们把整个序列 +1,然后整个序列的和就会加上 n​。

显然可以把整个序列加上

d=4n2s1n

就可以了。

肯定还有剩下没有加进去的 4n2(dn+s1),记作 s3,显然 0s3n1

让第 n1 个数加上 s3 即可。

Code

//Range = √Sum.cpp
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

#define int long long

const int N = 3e5 + 10;

int a[N];

void solve() {
	memset(a, 0, sizeof a);
	int n; cin >> n;
	
	int sum = 4 * n * n;
	
	for (int i = 1; i <= n - 1; ++i) a[i] = i;
	a[n] = 2 * n + 1;
	
	int tot = 0;
	for (int i = 1; i <= n; ++i) tot += a[i];
	
	int d = (sum - tot) / n;
	
	a[n - 1] += sum - tot - d * n;
	
	for (int i = 1; i <= n; ++i) cout << a[i] + d << ' ';
	
	cout << '\n';
}

signed main() {
	ios::sync_with_stdio(false); cin.tie(0), cout.tie(0);
	
	int T; cin >> T; while (T --) solve();
	return 0;
}
posted @   lyfandlzf  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示