首页 > 其他分享 >题解 CF1785D - Range = √Sum

题解 CF1785D - Range = √Sum

时间:2024-09-30 21:50:04浏览次数:8  
标签:le int 题解 Sum texttt long Range 序列

link

\(\texttt{Describe}\)

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

  • \(\forall i \in [1,n]\) 并且 \(1 \le a_i \le 10^9\)。

  • 对于任何的 \(1 \le i,j \le n(i \ne j)\),\(a_i \ne a_j\)。

  • \((\max_{i=1}^{n}a_i- \min_{i=1}^{n}a_i)^2 = \sum_{i=1}^{n}a_i\)。

\(\texttt{Solution}\)

显然构造题。

我们假设\(\sum a_i\) 为 \(4n^2\),则 \(\max{a_i} - \min{a_i}=2n\)。

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

我们记 \(s_1\) 为 \(1+2+\dots+(n-1)+(2n+1)\)。

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

显然可以把整个序列加上

\[d=\biggl\lfloor \frac{4n^2-s_1}{n} \biggl\rfloor \]

就可以了。

肯定还有剩下没有加进去的 \(4n^2-(dn+s_1)\),记作 \(s_3\),显然 \(0 \le s_3 \le n-1\)。

让第 \(n-1\) 个数加上 \(s_3\) 即可。

\(\texttt{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;
}

标签:le,int,题解,Sum,texttt,long,Range,序列
From: https://www.cnblogs.com/lstylus/p/18442487

相关文章

  • vscode 运行 C++分文件显示 undefined reference to 问题解决
    一、问题无法关联到对应的方法。  二、结局方法1、第一步,查看.vsode文件夹里面的task.json文件;设置里面参数;${file}改成 ${fileDirname}\\*.cpp 2、第二步 2.1、打开coderunner的setting.json文件; 2.2、将 $fileName改成*.cpp 3.3、最后起哄一下vs......
  • 题解:P11062 【MX-X4-T2】「Jason-1」加法
    考虑两种情况:\(a,b\)符号相同:考虑经过操作后\(a,b,\lverta-b\rvert\)会变成什么。:\(a\)\(b\)\(\lverta-b\rvert\)操作1\(a+b\)\(b\)\(\lverta\rvert\)操作2\(a\)\(a+b\)\(\lvertb\rvert\)可以看出只进行零次或一次操作后可以取到最小值......
  • 题解:P11129 【MX-X5-T1】「GFOI Round 1」Inverted World
    题目要求:\((a_l+\cdots+a_r)\div(r-l+1)\)是整数。即\(\frac{(a_l+a_r)\cdot(r-l+1)\div2}{r-l+1}\)为整数。即\(\frac{(a_l+a_r)}{2}\)为整数。即\(a_l+a_r\)为偶数。即\(m+(l-1)\cdotd+m+(r-1)\cdotd\)为偶数。即\(2m+(l+r-2)\cdotd\)为偶......
  • 大单元综合测试(一):第一章,第二章题解
    \(6.\)已知\(3a>b>0\),则\(\large\frac{a}{3a-b}-\frac{b}{a+b}\)的最小值为多少?基本方法\(\qquad\)对于高中基本不等式,这种分母较为复杂的求最值问题,我们一般都会采用将分母换元换元的方法,理由很自然,因为分式是分子除分母,所以分母形式的简单可以方便我们对问题的处理。那么......
  • AtCoder Beginner Contest 365题解
    A-LeapYear按照题意模拟即可。codeB-SecondBest按照题意模拟即可。codeC-TransportationExpenses考虑当\(x\)增大时,\(\min(x,a_i)=x\)的项会越来越少。换言之,当\(x\)足够大时,\(ans=\suma_i\),若此时\(ans>M\)则说明无论补贴多少,这时答案都是一定的......
  • WPF slider IsSelectionRangeEnabled TickFrequency
    <Windowx:Class="WpfApp426.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft......
  • 常见问题解决 --- 如何解决CROS跨域问题
    问题原因:前后端不是一个服务导致的浏览器禁止访问的安全问题。比如前端部署在http://x.x.x.x:8888,后端部署在http://x.x.x.x:9999,由于端口不一致,浏览器安全起见不允许一个web页面有不同ip或端口的地址发送出流量。在开发者工具可以看出CROS错误。解决办法:关闭浏览器安全策......
  • 小澳的葫芦 题解
    网上这么多大佬用01分数规划(完全不会),这里写一篇分层图造福社会。前置芝士:最短路。一个有向无环图,第一个想到的就是拓扑排序。定义\(dp(i)\)为到达第\(i\)个点所需要的经过点数和边权和(一个pair),正常转移即可。然后就发现假了。因为如果能够这样转移,就一定满足:\[\fra......
  • 题解:P6902 [ICPC2014 WF] Surveillance
    可以在cnblog中阅读。考虑弱化版链怎么做,每次选取左端点在当前位置前面的线段,跳到其中最大的右端点,可以维护一个数组表示起点为\(i\)的目标位置,可以做到\(O(n+k)\)。考虑多次询问一段区间\([l,r]\)的答案,这时如果暴力从\(l-1\)开始跳是\(O(n^2)\)的,只需要一个倍增数......
  • P11093 [ROI 2021 Day 2] 树制游戏 题解
    考虑对于一个解,将每对\((e_1,e_2)\)中\(e_1\)的终点权值\(+1\),\(e_2\)的起点权值\(-1\),那么最终每个点的权值一定是\(0\)。考虑先将每条边的终点权值都\(+1\),那么现在要做的就是选一些点将其起点和终点的权值都\(-1\),使得最终每个点的权值为\(0\),于是边的方向就不重要......