《算法竞赛-训练指南》第一章-1.19_UVa 11549
2013-07-20 10:28
288 查看
这个题目直接就让我给AC了。刚开始的时候还在思考用不用优先队列,但是优先队列是需要排序的,而这道题目明显是不能排序的。所以就想别的方法,发现最优解的求法:
首先遍历所有的数,每个数求出他减去其他的数的一个最大值,然后求出这所有的数的最大的值的最大值,我们可以开两个数组,分别求出到i位置的最大值和最小值,最大值减去最小值就是最大值,然后再遍历所有的最大值求出最大值的最大值。
贴出代码:
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
const int MAXN = 100000 + 11;
int a[MAXN];
int L[MAXN];
int R[MAXN];
int main()
{
int N, T;
scanf("%d", &T);
while (T--)
{
scanf("%d", &N);
for (int i = 0; i < N; i++)
{
scanf("%d", &a[i]);
}
L[0] = a[0];
for (int i = 1; i < N; i++) //求此i对应的左边对大值;
{
L[i] = max(L[i - 1], a[i]);
}
R[N - 1] = a[N - 1];
for (int i = N - 2; i >= 0; i--)
{
R[i] = min(R[i + 1], a[i]);
}
int ans = -111111111;
for (int i = 0; i < N - 1; i++)
{
ans = max(ans, L[i] - R[i + 1]);
}
printf("%d\n", ans);
}
// system("pause");
return 0;
}
首先遍历所有的数,每个数求出他减去其他的数的一个最大值,然后求出这所有的数的最大的值的最大值,我们可以开两个数组,分别求出到i位置的最大值和最小值,最大值减去最小值就是最大值,然后再遍历所有的最大值求出最大值的最大值。
贴出代码:
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
const int MAXN = 100000 + 11;
int a[MAXN];
int L[MAXN];
int R[MAXN];
int main()
{
int N, T;
scanf("%d", &T);
while (T--)
{
scanf("%d", &N);
for (int i = 0; i < N; i++)
{
scanf("%d", &a[i]);
}
L[0] = a[0];
for (int i = 1; i < N; i++) //求此i对应的左边对大值;
{
L[i] = max(L[i - 1], a[i]);
}
R[N - 1] = a[N - 1];
for (int i = N - 2; i >= 0; i--)
{
R[i] = min(R[i + 1], a[i]);
}
int ans = -111111111;
for (int i = 0; i < N - 1; i++)
{
ans = max(ans, L[i] - R[i + 1]);
}
printf("%d\n", ans);
}
// system("pause");
return 0;
}
相关文章推荐
- 《算法竞赛-训练指南》第一章-1.19_UVa 11549
- 《算法竞赛-训练指南》第一章-1.27-UVa 10635
- 《算法竞赛-训练指南》第一章-1.7——UVa 11464
- 《算法竞赛-训练指南》-第一章-1.10_UVa 11384
- 《算法竞赛-训练指南》第一章-1.24-UVa 10755
- 《算法竞赛-训练指南》第一章-1.11——Uva 10795
- 《算法竞赛-训练指南》第一章-1.17_UVa 11462
- 《算法竞赛-训练指南》第一章-1.28_UVa 10891
- 《算法竞赛-训练指南》第一章-1.5_UVa 10881
- 《算法竞赛-训练指南》第一章-1.9——UVa11210
- 《算法竞赛-训练指南》第三章-2.2_UVa 11991
- 《算法竞赛-训练指南》第一章-1.21_LA2678
- 《算法竞赛-训练指南》第五章-5.1_UVa 11624
- 《算法竞赛-训练指南》第三章-3.1_UVa 11995(STL数据结构运用)
- 《算法竞赛-训练指南》1.14-UVa 11520
- 《算法竞赛-训练指南》第三章-3.8_UVa 11235
- 《算法竞赛-训练指南》第一章-1.25-LA 2965
- 《算法竞赛-训练指南》第二章-2.14_UVa 11021
- 《算法竞赛-训练指南》-第二章-2.16_UVa 11427
- 《算法竞赛-训练指南》第一章-1.23_LA 3695