[构造] aw3672. 数组重排(构造+推公式+思维)
Posted Ypuyu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[构造] aw3672. 数组重排(构造+推公式+思维)相关的知识,希望对你有一定的参考价值。
1. 题目来源
链接:3672. 数组重排
2. 题目解析
有公式的题目,先推公式,对公式做变型。
题目初始要求 i-a[i] != j-a[j]
,等价于 i-j != a[i]-a[j]
,由于 i < j
,则 i-j<0
,当 a[i]-a[j]>=0
时,式子永远成立。
显然,应该从大到小排序即可。
时间复杂度: O ( n l o g n ) O(nlogn) O(nlogn)
空间复杂度: O ( n ) O(n) O(n)
#include <bits/stdc++.h>
using namespace std;
const int N = 105;
int n;
int a[N];
int main() {
int T;
scanf("%d", &T);
while (T -- ) {
scanf("%d", &n);
for (int i = 1; i <= n; i ++ ) scanf("%d", a + i);
sort(a + 1, a + 1 + n, greater<int>());
for (int i = 1; i <= n; i ++ ) printf("%d ", a[i]);
puts("");
}
return 0;
}
以上是关于[构造] aw3672. 数组重排(构造+推公式+思维)的主要内容,如果未能解决你的问题,请参考以下文章
[单调栈] aw3780. 构造数组(递推+单调栈+枚举+aw周赛009_3)