SGU 488 Dales and Hills
这给题目和LIS类似,只不过是求连续的单调序列,用单调队列可破之,比如求LDIS(连续单增序列),如果a[i]大于栈顶元素入栈,将top作为序列长度,反过来再扫一遍就是包含该元素的单调递减序列,这样通过LCDS,LCIS函数可得到4个存储某元素左右的单调增,减的数组。然后枚举一遍就可以。
#include<cstdio>
#include<cstring>
#include<algorithm>
#define N 1111111
#define INF 0x0f0f0f0f
using namespace std; int stack1[N];//不要在函数里开大数组!!!
int n;
void LCIS(int dp[],int a[])
{
int top=;
stack1[top]=-INF;
for(int i=;i<=n;i++)
{
if(a[i]>stack1[top])
{
stack1[++top]=a[i];
dp[i]=top;
}
else top=,stack1[]=a[i],dp[i]=top;
}
}
void LDIS(int dp[],int a[])
{
int top=;
stack1[top]=INF;
for(int i=;i<=n;i++)
if(a[i]<stack1[top])
{
stack1[++top]=a[i];
dp[i]=top;
}
else top=,stack1[top]=a[i],dp[i]=top;
} int dp1[N],dp2[N],dp3[N],dp4[N];
int a[N],b[N]; int main(void)
{
int tc;
scanf("%d",&tc);
while(tc--)
{
scanf("%d",&n);
for(int i=;i<=n;i++)
scanf("%d",a+i),b[n+-i]=a[i];
LCIS(dp1,a);
LCIS(dp2,b);
LDIS(dp3,a);
LDIS(dp4,b);
int ans1=,ans2=;
for(int i=;i<=n;i++)
{
ans1=max(ans1,min(dp1[i]-,dp2[n+-i]-));
ans2=max(ans2,min(dp3[i]-,dp4[n+-i]-));
}
printf("%d %d\n",ans1,ans2);
}
return ;
}
SGU 488 Dales and Hills的更多相关文章
- 2009-2010 ACM-ICPC, NEERC, Western Subregional Contest
2009-2010 ACM-ICPC, NEERC, Western Subregional Contest 排名 A B C D E F G H I J K L X 1 0 1 1 1 0 1 X ...
- SGU 495. Kids and Prizes
水概率....SGU里难得的水题.... 495. Kids and Prizes Time limit per test: 0.5 second(s)Memory limit: 262144 kil ...
- ACM: SGU 101 Domino- 欧拉回路-并查集
sgu 101 - Domino Time Limit:250MS Memory Limit:4096KB 64bit IO Format:%I64d & %I64u Desc ...
- 【SGU】495. Kids and Prizes
http://acm.sgu.ru/problem.php?contest=0&problem=495 题意:N个箱子M个人,初始N个箱子都有一个礼物,M个人依次等概率取一个箱子,如果有礼物则 ...
- SGU 455 Sequence analysis(Cycle detection,floyd判圈算法)
题目链接:http://acm.sgu.ru/problem.php?contest=0&problem=455 Due to the slow 'mod' and 'div' operati ...
- SGU 422 Fast Typing(概率DP)
题目大意 某人在打字机上打一个字符串,给出了他打每个字符出错的概率 q[i]. 打一个字符需要单位1的时间,删除一个字符也需要单位1的时间.在任意时刻,他可以花 t 的时间检查整个打出来的字符串,并且 ...
- sgu 104 Little shop of flowers 解题报告及测试数据
104. Little shop of flowers time limit per test: 0.25 sec. memory limit per test: 4096 KB 问题: 你想要将你的 ...
- 树形DP求树的重心 --SGU 134
令一个点的属性值为:去除这个点以及与这个点相连的所有边后得到的连通分量的节点数的最大值. 则树的重心定义为:一个点,这个点的属性值在所有点中是最小的. SGU 134 即要找出所有的重心,并且找出重心 ...
- SGU 170 Particles(规律题)
题目链接:http://acm.sgu.ru/problem.php?contest=0&problem=170 解题报告:输入两个由'+'和'-'组成的字符串,让你判断第二个串能不能由第一个 ...
随机推荐
- 【转】Oracle - 数据库的实例、表空间、用户、表之间关系
[转]Oracle - 数据库的实例.表空间.用户.表之间关系 完整的Oracle数据库通常由两部分组成:Oracle数据库和数据库实例. 1) 数据库是一系列物理文件的集合(数据文件,控制文件,联机 ...
- tlb,tlh,tli文件的关系
tlb文件:com类型库文件.在需要使用对应com类的模块里,“#import ...*.tlb”使用之. tlh.tli文件:他们是vc++编译器解析tlb文件生成的标准c++文件.因为odl和tl ...
- ASP.NET Web Forms 4.5的新特性
作者:Parry出处:http://www.cnblogs.com/parry/ 一.强类型数据控件 在出现强类型数据控件前,我们绑定数据控件时,前台一般使用Eval或者DataBinder.Eval ...
- oracle学习(1)
1.安装完oracle数据库后,远程第一次无法登陆,需要进入sys用户后,更改以此后才有效. 2.TNS去读取配置的时候,如果在环境变量中已经配置了 TNS_ADMIN 后,则直接从此目录下读取. 3 ...
- 通过sql做数据透视表,数据库表行列转换(pivot和Unpivot用法)(一)
在mssql中大家都知道可以使用pivot来统计数据,实现像excel的透视表功能 一.MSsqlserver中我们通常的用法 1.Sqlserver数据库测试 ---创建测试表 Create tab ...
- C语言遍历一个文件夹下面的所有文件
主要用到的函数/function. These should get you started: opendir() readdir() closedir() fopen() fread() fwrit ...
- How to: Declare encoding UTF-8 in python
References: http://stackoverflow.com/questions/12238307/declaring-encoding-in-python http://stackove ...
- Head First 设计模式系列之二----备忘录模式(java版)
申明:这几天无意中关注到备忘录模式,比较陌生回家一番参考书,只在附录里记录了该模式.后来在园子里有发现了有专门写设计模式的博客,并且写的也得牛逼.附上链接 http://www.cnblogs.com ...
- CentOS7 查看ip
查看内网:ip addr 查看公网:curl members.3322.org/dyndns/getip
- C# 解析带前缀的Xml节点内容
一般的xml文件相信大家都会解析了,但是遇到有命名空间的带前缀的xml,对于新手可能会有点问题.我这里在论坛解答的时候就遇到过一题,见怎么获取XML节点里面的内容,在线求教.这里给大家演示一下. 他的 ...