HHUOJ 1014 火眼金睛(另类思路题)
来源:互联网 发布:mac 六维空间 编辑:程序博客网 时间:2024/04/29 21:46
1014: 火眼金睛
时间限制: 3 Sec 内存限制:128 MB提交: 88 解决: 24
题目描述
河海大学举办合唱比赛,比赛时,所有演唱人员需要从高到低依次排队.
为了确保演唱时的队形的整齐,导演不希望出现前后两名同学的身高差距太多,因此他希望在正式海选之前,就能知道某个参赛队在队员身高上是否能满足要求.
现在他给到你每个参赛队每个队员的身高,希望你能设计一个程序帮他计算出站好队形之后,前后两名同学身高差的最大值.
为了确保演唱时的队形的整齐,导演不希望出现前后两名同学的身高差距太多,因此他希望在正式海选之前,就能知道某个参赛队在队员身高上是否能满足要求.
现在他给到你每个参赛队每个队员的身高,希望你能设计一个程序帮他计算出站好队形之后,前后两名同学身高差的最大值.
输入
第一行n,表示有n个数(N<=8000000)
第二行n个数,每个数< 231-1
第二行n个数,每个数< 231-1
输出
一个数,计算的结果
样例输入
77 4 1 1 6 5 9
样例输出
3
提示
火眼金睛,形容目光极其锐利,能以最快的速度找到差异.如果要达到火眼金睛的状态,可能需要更小(O(N))的时间复杂度.
---二次判定,数据被我减弱了,O(NlogN)也可以过了,大家加油OTZ
来源
河海ACM前辈:姜鹏
思路:
原本的题对时间复杂度要求很高。。必须要用O(n)的算法才能过,所以比赛时候没做出来,后来数据改松了。。虽然排个序就过了但是好不甘心,这里就当作原来没该数据之前做了。给定一个无序数组,找到数组中排序后相邻差最大的值。假定数组的值从MIN~MAX,则排序后相邻数的差临界情况就是等差排序的,因此maxgap >= (MAX-MIN)/(N-1),此时可以对所有数字进行分组{1,2,..,maxgap}{maxgap+1,...2maxgap}...,将对应的数放在对应的组内即可。这样分组,由于组内的gap最大是maxgap-1因此最大的差肯定出现在组间,统计相邻组p q的q(min)-p(max),找最大值即为最大。
代码:
//From zyyyyy#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>using namespace std;const int N=8000010;const int INF=((1<<30)-1)*2+1;const double eps=1e-6;int a[N],gmaxv[N],gminv[N];int main(){int n,i;int high=-INF,low=INF;scanf("%d",&n);for (i=1;i<=n;i++){scanf("%d",&a[i]);high=max(high,a[i]);low=min(low,a[i]);}double cd=1.0*(high-low)/(n-1);int ans=int(cd+0.5);for (i=1;i<=n;i++)gmaxv[i]=-INF,gminv[i]=INF;for (i=1;i<=n;i++){if (a[i]==low) continue;int k=(a[i]-low)/cd;if (a[i]-low>k*cd) k++;gmaxv[k]=max(gmaxv[k],a[i]);gminv[k]=min(gminv[k],a[i]);}for (i=1;i<=n;i++){if (gminv[i]==INF) continue;ans=max(ans,gminv[i]-low);low=gmaxv[i];}printf("%d\n",ans);return 0;}
0 0
- HHUOJ 1014 火眼金睛(另类思路题)
- 火眼金睛
- 火眼金睛
- 火眼金睛
- HHUOJ 1012 欧洲杯(水题)
- 另类思路入侵
- 反编译的另类思路
- HHUOJ 1004 台球碰撞(不知道为什么就T的水题)
- HHUOJ 1001 汽水瓶 (水题)
- HHUOJ 1002 弟弟的作业(水题)
- HHUOJ 1017 最小差(01背包)
- HHUOJ 1020 Boxes and Balls(找规律)
- HHUOJ 1003 数字整除(模拟大数整除)
- HHUOJ 1005 内部收益率 (二分法求方程解)
- 另类巧妙的思路:旁门左道的入侵
- 实现编号查询的另类思路
- 创业者的另类创富思路
- IBatis下DAO单元测试另类思路
- 阿里笔试题
- hdu5477 A Sweet Journey(水)
- panic: reflect.Value.Interface: cannot return value obtained from unexported field or method
- C++ TCP 和 UDP 在socket编程中的区别
- hdu5469 Antonidas(DFS)
- HHUOJ 1014 火眼金睛(另类思路题)
- 二进制dat格式数据转十六进制输出
- intel cpu
- XAMPP更改Apache的网站根目录
- 无影Shadowless-开源无线手柄设计
- 友录项目总结笔记:
- java中文乱码解决之道(一)-----认识字符集
- 南阳oj 168 房间安排
- hdu5475 An easy problem(线段树)