码迷,mamicode.com
首页 > 其他好文 > 详细

Luogu P1970 花匠

时间:2019-10-16 00:38:02      阅读:72      评论:0      收藏:0      [点我收藏+]

标签:记录   names   bit   情况   注意   pre   序列   mat   ==   

Luogu P1970 花匠

本质上就是找最长的波浪序列。
因为考虑到第一个必选,所以可以让\(lst=h[1]\).
此外,注意到\(n=1\)是要特判,其他情况下显然\(ans\geq 2\),所以把\(dir\)初始化为\(-1\)是很巧的操作,这保证了除第一个外至少有一个被选。

#include<bits/stdc++.h>

using namespace std;

int n,m,lst,dir=-1,newdir; //(new)dir记录方向:0下1上
int h[100010];

int main() {
    scanf("%d",&n);
    for(int i=1;i<=n;i++) {
        scanf("%d",&h[i]);
    }
    if(n==1) {
        printf("1");
        return 0;
    }
    m++;
    lst=h[1];
    for(int i=2;i<=n;i++) {
        if(h[i]==lst) {
            continue;
        }
        else if(h[i]<lst) {
            newdir=0;
        }
        else {
            newdir=1;
        }
        if(newdir!=dir) {
            m++;
            dir=newdir;
        }
        lst=h[i];
    }
    printf("%d",m);
    return 0;
}

Luogu P1970 花匠

标签:记录   names   bit   情况   注意   pre   序列   mat   ==   

原文地址:https://www.cnblogs.com/luoshui-tianyi/p/11681862.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!