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. [转]android.support.v4.app.Fragment和android.app.Fragment区别

      1.最低支持版本不同 android.app.Fragment 兼容的最低版本是android:minSdkVersion="11" 即3.0版 android.support ...

  2. Codeforces Beta Round #5 D. Follow Traffic Rules 物理

    D. Follow Traffic Rules 题目连接: http://www.codeforces.com/contest/5/problem/D Description Everybody kn ...

  3. HDU 5642 King's Order 动态规划

    King's Order 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5642 Description After the king's speec ...

  4. Codeforces Round #303 (Div. 2) B. Equidistant String 水题

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

  5. hihocoder 1519 : 逃离迷宫II

    题目链接 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi被坏女巫抓进里一间有N x M个格子组成的矩阵迷宫. 有些格子是小Hi可以经过的,我们用'.'表示:有些格 ...

  6. SpringMVC 3.1.1版本下的单元测试WEB-INF路径问题

    假设Spring配置文件为applicationContext.xml 一.Spring配置文件在类路径下面 在Spring的java应用程序中,一般我们的Spring的配置文件都是放在放在类路径下面 ...

  7. iOS开发读取plist文件、iphone中plist文件的

    在Xcode中建立一个iOS项目后,会自己产生一个.plist文件,点击时会看见它显示的是类似于excel表格: 但是,如果打开方式选择Source Code,你会看见它其实是一个xml文件. 我们会 ...

  8. busdog is a filter driver for MS Windows (XP and above) to sniff USB traffic.

    https://code.google.com/p/busdog/ busdog is a filter driver for MS Windows (XP and above) to sniff U ...

  9. VS2010 + IDA SDK 搭建IDA Plugin开发环境

    http://www.h4ck.org.cn/2011/11/vs2010-idasdk6-2-ida-plugin-development/ 1. 执行菜单的File->New->Pro ...

  10. JSP入门详解

    一.基础知识详解 1.JSP中使用html注释<!-- -->客户端可见,使用jsp注释<%-- --%>客户端不可见(查看源文件只看到空行),单行和多行注释也看不到(//或者 ...