ouc 1095

1095: C.波动序列

时间限制: 2 Sec  内存限制: 64 MB
提交: 103  解决: 41
[提交][状态][讨论版]

题目描述

有一个长度为N的整数序列,序列里面的数是两两不同的,现在要在里面找一个波动序列,这个序列越长越好。

比如有波动序列{a0,a1,a2…an},则a0 > a1 < a2 > a3 < …

输入

第一行输入一个数T,代表有T个任务,T不大于50。

对于每个任务,输入格式为

N a0 a1 a2 … aN

其中N<=30000,测试数据保证序列的数两两不同。

输出

对于每个任务,输出最长的波动序列长度

样例输入

4
5 1 2 3 4 5
5 5 4 3 2 1
5 5 1 4 2 3
5 2 4 1 3 5

样例输出

1
2
5
3

提示

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
#include<cstdlib>
#include<algorithm>
#include<queue>
#include<vector>
using namespace std;
int t,n,a[30010],now,len;
bool flag;
int main()
{
scanf("%d",&t);
while(t--)
{
len=1;
scanf("%d",&n);
flag=1;
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
now=a[1];
for(int i=2;i<=n;i++)
{
if(!flag&&now<a[i])
{
flag=1;
len++;
}
else if(flag&&now>a[i])
{
flag=0;
len++;
}
now=a[i];
}
printf("%d\n",len);
}
return 0;
}

  

时间: 2024-10-13 21:53:06

ouc 1095的相关文章

Light oj 1095 - Arrange the Numbers (组合数学+递推)

题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1095 题意: 给你包含1~n的排列,初始位置1,2,3...,n,问你刚好固定前m个数中的k个数的位置,问你有多少中排列方案.(比如5 3 2有1 4 3 2 5这种方案,1和3固定了) 思路: 前m个取k个就是C(m, k)个方案.然后就是类似错排的思想,设dp[i]为i个数在初始位置各不相同.其中的组合数用逆元算出. ans = dp[m - k] * C(n - m,

bzoj 1095 括号序列求两点距离

大致题意: 给一棵树,每个节点最开始都是黑色,有两种操作,1.询问树中相距最远的一对黑点的距离 2.反转一个节点的颜色 一种做法: 建立出树的括号序列,类似这样: [A[B][C]],所以长度为3*n 假如我们要询问AC间的距离,提取出中间的括号:[]],匹配消去后得到],其长度就是距离. 现在我们要做的就是修改点的状态,并且动态维护答案.要用到一些求与绝对值相关的式子的技巧. 1 /********************************************************

九度OJ 1095 2的幂次方

题目1095:2的幂次方 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:772 解决:525 题目描述: Every positive number can be presented by the exponential form.For example, 137 = 2^7 + 2^3 + 2^0. Let's present a^b by the form a(b).Then 137 is presented by 2(7)+2(3)+2(0). Since 7 = 2^2 +

lightoj 1095 - Arrange the Numbers(dp+组合数)

题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1095 题解:其实是一道简单的组合数只要推导一下错排就行了.在这里就推导一下错排 dp[i]=(i-1)*dp[i-2](表示新加的那个数放到i-1中的某一个位置然后那个被放位置的数放在i这个位置就是i-2的错排)+(i-1)*dp[i-1](表示新加的那个数放到i-1中的某一个位置然后用那个位置被占的数代替i这个位置的数就是i-1的错排) #include <iostream

1095 火星人

1095 火星人 2004年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 人类终于登上了火星的土地并且见到了神秘的火星人.人类和火星人都无法理解对方的语言,但是我们的科学家发明了一种用数字交流的方法.这种交流方法是这样的,首先,火星人把一个非常大的数字告诉人类科学家,科学家破解这个数字的含义后,再把一个很小的数字加到这个大数上面,把结果告诉火星人,作为人类的回答. 火星人用一种非常简单的方式来表示数字—

POJ 1095 Trees Made to Order

题目大意: 按照题意将数用二叉树的形式表示出来.将二叉树按照要求形式输出. 解题思路: 由于有图示,可以轻易看出这个顺序跟卡特兰数列有关.且对于任意一个树的任意子树来说,右子树相当于分针,左子树相当于秒针.也就是说当右子树要变换到下一种状态时,左子树要将它所能变换的状态全变换完才可以. 下面是代码: #include <set> #include <map> #include <queue> #include <math.h> #include <ve

OUC&amp;&amp;我的ACM之路(三)

OUC && 我的ACM之路(三) 时间匆匆,转眼间,省赛我都已经参加过三届了.前面两篇日志:OUC && 我的ACM之路(一)  OUC && 我的ACM之路(二)首先吐槽一下这次省赛题目实在太简单了,也许HIT认为我们就这个水平吧.SD加油,早日冲出final.  rank在这里 其实我也没啥好总结的,只是感概,时间过得匆匆,很多话,前面两篇里面已经说了.最后说一下,实际比赛的时候,ABG三个数学题目,ouc_abc写的,Orz,要当时的状态,我应该是推

【BZOJ 1095】 [ZJOI2007]Hide 捉迷藏

1095: [ZJOI2007]Hide 捉迷藏 Time Limit: 40 Sec  Memory Limit: 162 MB Submit: 1232  Solved: 501 [Submit][Status] Description 捉迷藏 Jiajia和Wind是一对恩爱的夫妻,并且他们有很多孩子.某天,Jiajia.Wind和孩子们决定在家里玩捉迷藏游戏.他们的家很大且构造很奇特,由N个屋子和N-1条双向走廊组成,这N-1条走廊的分布使得任意两个屋子都互相可达.游戏是这样进行的,孩子

timus 1095 Nikifor 3【思路】

传送门:timus 1095 题意:给出一个数字(可能是大数),其中1,2,3,4每个数至少出现一次,将大数数字重新排列,输出一个能被7整除且不以0为前缀的结果,如果没有,则输出0 思路: 利用1,2,3,4至少出现一次的信息先枚举一下他们的组合mod7的情况,因为所有整形数mod7结果只能出现7种情况 7是一个不一般的数啊 不一般体现在这里 ( 10%7=3 20%7=6 30%7=2; 40%7=5; 50%7=1; 60%7=4;) 这个可以先通过写测试代码来模拟相应的结果 int i,j