S + T

时间限制:1000 ms  |  内存限制:65535 KB
难度:2
描写叙述

给你一个长度为n的整数序列A1。A2,……,An,找出两个整数Ai和Aj(i<j),使得Ai-Aj尽量大。

输入
输入第一行为数据组数T(T<=100)。

每组数据的第一行为整数的个数n(2<=n<=100000);一下n行。每行为一个绝对值不超过150000的正整数。

(全部的数据都不超过2^64 - 1)

输出
对于每组数据,输出Ai –Aj的最大值、i值和j值。(假设有多个最大值,则输出先出现的最大值和i,j值)
例子输入
235 2 162 3 6 2 1 -1
例子输出
4 1 37 3 6
提示
假设你觉得数据太大,则本OJ推荐使用long long
来源
算法入门
上传者

userid=ACM_%E9%92%9F%E8%AF%97%E4%BF%8A" style="color:rgb(55,119,188)">ACM_钟诗俊

刚開始用的结构体优先队列,结果发现wa了几次才发现,i>j...也就是说前面的数减去后面数的最大值。

想想还是把wa的贴出来吧。AC贪心策略是,先把数据用数组保存起来。然后for循环从0-n筛选最大值,保存起来,从n-0筛选最小值,保存起来。

最后再用一个for循环寻找差的最大值。详细看以下ac代码。

wa:

#include <stdio.h>
#include <queue>
using namespace std;
struct node
{
long long t,num;
bool operator<(const node &a)const
{
if(num<a.num)
return true;
else if(num==a.num&&t<a.t)
return true;
else
return false;
}
};
priority_queue<node>s;
int main()
{
long long ncase,mark1,mark2,sum,n,mark;
node x,y1,y2,temp;
scanf("%lld",&ncase);
while(ncase--)
{
scanf("%lld",&n);
for(int i=1;i<=n;i++)
{
scanf("%lld",&x.num);
x.t=i;
s.push(x);
}
y1=s.top();
while(s.size()>1)
{
temp=s.top();
if(temp.num!=y1.num)
break;
else
mark=temp.t,s.pop();
}
while(s.size()>1)
s.pop();
y2=s.top(),s.pop();
printf("%lld",y1.num-y2.num);
if(y1.num!=y2.num)
printf(" %lld %lld\n",mark,y2.t);
else
printf(" 1 2\n");
}
return 0;
}

ac:

#include <stdio.h>
#include <string.h>
#define N 100005
long long num[N];
struct node
{
long long max,t1,min,t2;
}c[N];
int main()
{
long long t,n,temp,mark1,mark2;
scanf("%lld",&t);
while(t--)
{
memset(num,0,sizeof(num));
memset(&c,0,sizeof(&c));
scanf("%lld",&n);
temp=-150005;
for(int i=0;i<n;i++)
{
scanf("%lld",&num[i]);
if(temp<num[i])
temp=num[i],mark1=i+1;
c[i].max=temp;
c[i].t1=mark1;
}
temp=150005;
for(int i=n-1;i>=0;i--)
{
if(num[i]<=temp)
temp=num[i],mark2=i+1;
c[i].min=temp;
c[i].t2=mark2;
}
temp=-150005*2;
for(int i=0;i<n-1;i++)
{
if(temp<c[i].max-c[i+1].min)
temp=c[i].max-c[i+1].min,mark1=c[i].t1,mark2=c[i+1].t2;
}
printf("%lld %lld %lld\n",temp,mark1,mark2);
}
return 0;
}

nyoj847 S + T(贪心)的更多相关文章

  1. BZOJ 1692: [Usaco2007 Dec]队列变换 [后缀数组 贪心]

    1692: [Usaco2007 Dec]队列变换 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1383  Solved: 582[Submit][St ...

  2. HDOJ 1051. Wooden Sticks 贪心 结构体排序

    Wooden Sticks Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) To ...

  3. HDOJ 1009. Fat Mouse' Trade 贪心 结构体排序

    FatMouse' Trade Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  4. BZOJ 1691: [Usaco2007 Dec]挑剔的美食家 [treap 贪心]

    1691: [Usaco2007 Dec]挑剔的美食家 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 786  Solved: 391[Submit][S ...

  5. 【Codeforces 738D】Sea Battle(贪心)

    http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 × n g ...

  6. 【BZOJ-4245】OR-XOR 按位贪心

    4245: [ONTAK2015]OR-XOR Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 486  Solved: 266[Submit][Sta ...

  7. code vs 1098 均分纸牌(贪心)

    1098 均分纸牌 2002年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解   题目描述 Description 有 N 堆纸牌 ...

  8. 【BZOJ1623】 [Usaco2008 Open]Cow Cars 奶牛飞车 贪心

    SB贪心,一开始还想着用二分,看了眼黄学长的blog,发现自己SB了... 最小道路=已选取的奶牛/道路总数. #include <iostream> #include <cstdi ...

  9. 【贪心】HDU 1257

    HDU 1257 最少拦截系统 题意:中文题不解释. 思路:网上有说贪心有说DP,想法就是开一个数组存每个拦截系统当前最高能拦截的导弹高度.输入每个导弹高度的时候就开始处理,遍历每一个拦截系统,一旦最 ...

随机推荐

  1. Nginx -- nginx.conf 配置文件详讲

    Nginx服务器配置,nginx.conf文件代码详讲,结合不同楼主的博文得到: #关掉访问日志可以优化服务器 #定义Nginx运行的用户和用户组 #user nobody; #nginx进程数 #如 ...

  2. HDU 5645 DZY Loves Balls 水题

    DZY Loves Balls 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5645 Description DZY loves playing b ...

  3. Codeforces Round #304 (Div. 2) B. Soldier and Badges 水题

    B. Soldier and Badges Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/54 ...

  4. Codeforces Round #303 (Div. 2) C. Woodcutters 贪心

    C. Woodcutters Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/545/probl ...

  5. JVM调优总结 -Xms -Xmx -Xmn -Xss等

                  首先介绍一下新生代.老年代.所谓的新生代和老年代是针对于分代收集算法来定义的,新生代又分为Eden和Survivor两个区.加上老年代就这三个区.数据会首先分配到Eden区 ...

  6. cocos3.0使用cocostudio动画帧结合地图对象键值创建精灵动画

    内容例如以下: #include "cocos2d.h" #include "cocostudio/CocoStudio.h" //精灵猫和其它精灵的tag t ...

  7. 【spring】RestTemplate发送请求,请求第三方接口 的几种请求方式POST,GET,DELETE,PUSH

    org.springframework.web.client.RestTemplate 参考地址:http://www.cnblogs.com/UniqueColor/p/7123347.html G ...

  8. OpenShift跨版本升级

    官方的in-place upgrade直接在线升级的参考链接 https://docs.openshift.com/container-platform/3.11/upgrading/automate ...

  9. jquery判断滚动条是否到底部

    clientHeight:这个元素的高度,占用整个空间的高度,所以,如果一个div有滚动条,那个这个高度则是不包括滚动条没显示出来的下面部分的内容.而只是单纯的DIV的高度. offsetHeight ...

  10. 【Networking】网络编程常见问题汇总

    [百度分享]网络编程常见问题总结 串讲(一)网络编程常见问题总结    在网络程序中遇到的一些问题进行了总结, 这里主要针对的是我们常用的TCP socket相关的总结, 可能会存在错误, 有任何问题 ...