题意:就是说给你一段区间,要你找出一段最长的区间,在这段区间的所有数都大于区间的第一个数、小于区间的最后一个数......输出区间的长度,若是长度为0则输出-1.

4
5 4 3 6
4
6 5 4 3
思路:暴力吧,有些技巧。可以说是区间合并,往后找一个数,然后往前找它前面有多少个数比它小,并记录最小值,和最小值的位置,然后用当前值所在位置减去最小值所在位置,就是这段区间的结果,再把这结果保存到当前值所在位置,然后往下找.....
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
#define M 50100
struct node
{
int num;
int sum;
}s[M];
int main()
{
int n;
while(scanf("%d",&n)>0)
{
//memset(s,0,sizeof(s));
for(int i=1;i<=n;i++)
{
scanf("%d",&s[i].num);
s[i].sum=0;
}
int ans=0;
for(int i=2;i<=n;i++)
{
int j=i-1;
//int sum=0;
int minx=100000000;
int xxx=-1;
while(j>=1)
{
if(s[i].num>s[j].num)
{
if(s[j].sum==0)
{
//sum++;
if(s[j].num<minx)
{
minx=s[j].num;
xxx=j;
}
j--;
}
else
{
//sum+=s[j].sum;
j-=s[j].sum;
}
}
else
break;
}
if(xxx!=-1)
s[i].sum=i-xxx;
else
s[i].sum=0;
if(ans<s[i].sum)
ans=s[i].sum;
}
if(ans==0)
printf("-1\n");
else
printf("%d\n",ans);
}
return 0;
}

poj2452的更多相关文章

  1. POJ-2452 Sticks Problem 二分+RMQ

    题目链接: https://cn.vjudge.net/problem/POJ-2452 题目大意: 给出一个数组a,求最大的j-i满足 i<j && a[i] ... a[j] ...

  2. Sticks Problem

    Sticks Problem poj-2452 题目大意:给你一串n个数的数列a,上面的数为a1到an.我们求最大的y-x,其中,y和x满足1.x<y 2.任意的x<i<y,都有ai ...

  3. ACM学习大纲

    1 推荐题库 •http://ace.delos.com/usaco/ 美国的OI 题库,如果是刚入门的新手,可以尝试先把它刷通,能够学到几乎全部的基础算法极其优化,全部的题解及标程还有题目翻译可以b ...

  4. ACM训练大纲

    1. 算法总结及推荐题目 1.1 C++ STL • STL容器: set, map, vector, priority_queue, queue, stack, deque, bitset• STL ...

  5. ACM学习大纲(转)

    1 推荐题库 •http://ace.delos.com/usaco/ 美国的OI 题库,如果是刚入门的新手,可以尝试先把它刷通,能够学到几乎全部的基础算法极其优化,全部的题解及标程还有题目翻译可以b ...

随机推荐

  1. Struts2的配置文件的配置struts.xml

    在学习struts的时候,我们一定要掌握struts2的工作原理. 仅仅有当我们明白了在struts2框架的内部架构的实现过程.在配置整个struts 的框架时.能够非常好的进行逻辑上的配置.接下来我 ...

  2. python线程详解

    #线程状态 #线程同步(锁)#多线程的优势在于可以同时运行多个任务,至少感觉起来是这样,但是当线程需要共享数据时,可能存在数据不同步的问题. #threading模块#常用方法:'''threadin ...

  3. PHP-数据库永久连接

    以下为PHP官网上对数据库永久连接做的解释: 永久的数据库连接是指在脚本结束运行时不关闭的连接.当收到一个永久连接的请求时.PHP 将检查是否已经存在一个(前面已经开启的)相同的永久连接.如果存在,将 ...

  4. Python 死循环和嵌套循环

    何为死循环:在编程中,一个无法靠自身的控制终止的循环被称为死循环. 死循环的使用:死循环并非一无是处,C语言中死循环while true或 while 1 是单片机编程的普遍用法,死循环一直运行等待中 ...

  5. Web前端开发必备工具推荐

    http://gaohaixian.blog.163.com/blog/static/12326010520114265223489/不管你做前端开发还是网页重构,前端工具都起着非常重要的作用,这里向 ...

  6. 【js】with 语句

    with 语句 为语句设定默认对象. with (object)   statements 参数 object 新的默认对象. statements 一个或多个语句,object 是该语句的默认对象. ...

  7. linux write系统调用如何实现

    在Linux下我们在使用设备的时候,都会用到write这个函数,通过这个函数我们可以象使用文件那样向设备传送数据.可是为什么用户使用write函数就可以把数据写到设备里面去,这个过程到底是怎么实现的呢 ...

  8. page_address()函数分析

    由于X86平台上面,内存是划分为低端内存和高端内存的,所以在两个区域内的page查找对应的虚拟地址是不一样的. 一. x86上关于page_address()函数的定义 在include/linux/ ...

  9. 谈谈CListCtrl如何调整行高

    原文链接: http://blog.csdn.net/sstower/article/details/9094939 调整CListCtrl 行高通常有3种方法: 1.设定字体2.设定图片3.处理Me ...

  10. python 小游戏之摇骰子猜大小

    最近学习Python的随机数,逻辑判断,循环的用法,就想找一些练习题,比如小游戏猜大小,程序思路如下: 开发环境:python2.7 , 附上源代码如下: 摇骰子的函数,这个函数其实并不需要传任何参数 ...