zoukankan      html  css  js  c++  java
  • HNUSTOJ-1051 最长的波动序列

    1051: 最长的波动序列

    时间限制: 1 Sec  内存限制: 128 MB
    提交: 47  解决: 13
    [提交][状态][讨论版]

    题目描述

    有一个长度为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<cstring>
    #include<cstdio>
     
    using namespace std;
    const int N = 30000 + 5;
    int a[N];
    void Solve(int n){
        int ans = 1, flag = 1, cur = a[0];
        for(int i = 1; i < n; i++){
            if(flag > 0 && cur > a[i]){
                flag *= -1;
                ans++;
            }else if(flag < 0 && cur < a[i]){
                flag *= -1;
                ans++;
            }
            cur = a[i];
        }
        printf("%d
    ", ans);
    }
    int main(){
        int T, n;
        scanf("%d", &T);
        while(T --){
            scanf("%d", &n);
            for(int i = 0; i < n; i++) scanf("%d", &a[i]);
            Solve( n );
        }
    }
     
  • 相关阅读:
    工厂模式
    Bootstrap 日历
    处理乱码
    Eclipse常用快捷键
    C#_XML与Object转换
    jQuery选择函数
    Bootstrap如何正确引用字体图标
    js上拉加载、下拉刷新的插件
    js通用对象数组冒牌排序
    关于js跨域
  • 原文地址:https://www.cnblogs.com/Pretty9/p/7406796.html
Copyright © 2011-2022 走看看