洛谷 3903 导弹拦截III#线性动态规划#

题目

拦截的第奇数颗导弹比前一颗导弹更远、更高,拦截的第偶数颗导弹比前一个更远、更低,问一共能防御多少颗导弹。


分析

像过山车一样的序列我也不知道叫什么,不过纯模拟就好了,貌似叫dp。


代码

#include <cstdio>
#include <cctype>
using namespace std;
int ans=1,last,now,n; bool big;
int in(){
    int ans=0; char c=getchar();
    while (!isdigit(c)) c=getchar();
    while (isdigit(c)) ans=ans*10+c-48,c=getchar();
    return ans;
}
int main(){
    n=in(); now=in();
    while (--n){
        last=now; now=in();
        if (last==now) continue;//相等跳过
        if (big^(now<last)) ans++,big=now<last;//正好大小关系与上一次不同
    }
    return !printf("%d",ans);//也就是这些升降的个数
} 

猜你喜欢

转载自blog.csdn.net/sugar_free_mint/article/details/80201103