zoukankan      html  css  js  c++  java
  • C. Manhattan Subarrays

    https://codeforces.com/problemset/problem/1550/C

    定义了曼哈顿距离

    如果满足 曼哈顿距离的等式 则 三点构成坏三角

    如果没有坏三角就是好序列

    问有个多少个子段是好的

    ----

    只有三点构成v或者倒v时 就是不递增或者递减,不满足等式 

    子段长为1或者2都是可行的

    子段长为3时,需要我们判断是否构成v或者倒v

    子段长为4时,四个点从低到高定义为abcd

    y

    |——————d

    |————c——

    |—————b—

    0—a—————x

    对于可能构成三点递增或者递减关系的情况,各自判断

    bool f(int i,int j,int k){
        if(a[j]>a[i]&&a[j]>a[k])    return 1;
        if(a[j]<a[i]&&a[j]<a[k])    return 1;
        return 0;
    }
    void solve(){
        scanf("%lld",&n);
        for(int i = 1;i<=n;++i)    scanf("%lld",&a[i]);
        int ans=n*2-1;
        for(int i=3;i<=n;++i){
            int a=i-2,b=i-1,c=i;
            if(f(a,b,c))    ans++;
        }
        for(int i=4;i<=n;++i){
            int a=i-3,b=i-2,c=i-1,d=i;
            if(f(a,b,c)&&f(a,b,d)&&f(a,c,d)&&f(b,c,d))ans++;
        }
        printf("%lld
    ",ans);
    }
  • 相关阅读:
    子网掩码的作用与IP网段的划分
    DHCP服务器
    Anaconda安装、更新第三方包
    time模块的使用
    TensorFlow安装
    机器学习-线性回归
    机器学习
    Pyhton-类(2)
    python-类(1)
    Python-函数
  • 原文地址:https://www.cnblogs.com/PdrEam/p/15348540.html
Copyright © 2011-2022 走看看