zoukankan      html  css  js  c++  java
  • hdu5400Arithmetic Sequence

    //一个序列,两个公差d1,d2
    //问有多少个区间使得这个区间存在一个点,它的左边是公差为d1的序列
    //它的右边是公差为d2的序列
    //直接存入每一个点向左和向右延伸的公差长度,乘一下即可
    //还有就是注意一下d1=d2的情况
    #include<cstdio>
    #include<cstring>
    #include<iostream>
    using namespace std ;
    const int maxn = 1e5+10 ;
    int a[maxn] ;
    typedef long long ll ;
    ll l[maxn] , r[maxn] ;
    int main()
    {
        int n , d1 , d2 ;
        while(~scanf("%d%d%d" ,&n , &d1 , &d2))
        {
            for(int i = 1;i <= n;i++)
                scanf("%d" , &a[i]) ;
            ll ans = 0 ;
            if(d1 == d2)
            {
                ll sum = 1;
                for(int i = 2;i <= n;i++)
                if(a[i] == a[i-1] + d1)
                sum++ ;
                else
                {
                    ans += (sum+1)*sum/2 ;
                    sum = 1 ;
                }
                ans += (sum+1)*sum/2 ;
            }
            else
            {
                l[0] = 0 ;r[n+1] = 0 ;
                for(int i = 1;i <= n;i++)
                if(a[i] == a[i-1] + d1)
                l[i] = l[i-1] + 1 ;
                else l[i] = 1 ;
                for(int i = n;i >= 1;i--)
                if(a[i] == a[i+1] - d2)
                r[i] = r[i+1] + 1 ;
                else r[i] = 1 ;
                for(int i = 1;i <= n;i++)
                ans += l[i]*r[i] ;
            }
            printf("%lld
    " , ans) ;
        }
        return 0 ;
    }
    

  • 相关阅读:
    cavans笔记
    input心得
    杂乱的笔记
    CSS学习目录
    CSS3四个自适应关键字——fill-available、max-content、min-content、fit-content
    闭包
    0..0 小白
    Scrum
    Git与GitHub
    博客1
  • 原文地址:https://www.cnblogs.com/yutingliuyl/p/7003120.html
Copyright © 2011-2022 走看看