洛谷 p1567 统计天数(求最大上升子序列)

洛谷 p1567 统计天数

题目背景
统计天数

题目描述
炎热的夏日,KC非常的不爽。他宁可忍受北极的寒冷,也不愿忍受厦门的夏天。最近,他开始研究天气的变化。他希望用研究的结果预测未来的天气。

经历千辛万苦,他收集了连续N(1<=N<=10^7)天的最高气温数据。

现在,他想知道最高气温一直上升的最长连续天数。

输入输出格式
输入格式:
*1行:一个整数N。1<=N<=10^7

*2行:N个空格隔开的整数,表示连续N天的最高气温。0<=最高气温<=10^9。

输出格式:
*1行:一个整数,表示最高气温一直上升的最长连续天数。

输入输出样例
输入样例#1:
10
1 2 3 2 4 5 6 8 5 9

输出样例#1:
5

说明
时间限制1s 内存限制128MB

分析:因为数值范围是10^7,所以int开数组就可以,但是如果10^9 的时候就需要用long long 了。
如下面代码,求最长上升子序列,需要用sum来计算每一次序列长度,然后s来存储最大值。

代码:

# include 
using namespace std;
int a[10000001];
int main(){
    int n, i, sum = 1, s = 0;
    cin>>n;
    for(i = 1; i <= n; ++i){
        cin>>a[i];
    }
    a[n + 1] = -1;
    for(i = 1; i <= n; ++i){
        if(a[i + 1] > a[i]){
            sum ++;
        } else {
            if(sum > s){
                s = sum;
                sum = 1;
            } else{
                sum = 1;
            }
        }
    }
    cout<return 0;
}

你可能感兴趣的:(洛谷 p1567 统计天数(求最大上升子序列))