hdu 5400

原创 2016年05月31日 10:25:43

开个map表示每个数组单独是否已经被算过了,注意自增和下标的前移以及回退,不要死循环~

#include<bits/stdc++.h>
using namespace std;
#define ll long long
int n,d1,d2;
const int maxn=1e5+10;
int a[maxn];map<int,int>m;
int main(){
    while(scanf("%d%d%d",&n,&d1,&d2)!=EOF){
        for(int i=1;i<=n;i++){
            scanf("%d",&a[i]);
        }
        m.clear();
        ll ans=0;
        int sum,flag;flag=0;
        for(int i=1;i<=n;i++){
            int j=i+1;sum=1;//flag=0;
            while(j<=n&&a[j]-a[j-1]==d1){
                sum++;j++;
            }
            while(j<=n&&a[j]-a[j-1]==d2){
                sum++;j++;
            }
        //  system("pause");
        //  cout<<" j= "<<j<<endl;
        //  cout<<" i= "<<i<<" sum= "<<sum<<endl;
            if(j!=i+1){
             ans+=(1ll*sum*(sum+1)/2);m[j-1]=1;
             if(m[i]) ans--;
            }
            else if(m[i]==0) ans+=(1ll*sum*(sum+1)/2);
        //  cout<<" ans = "<<ans<<endl;
            if(j!=i+1) i=j-2;
        }
        printf("%lld\n",ans);
    }
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

HDU 5400

题意:问你[1 ,n]之间有多少个连续区间[l,r] 满足存在一个l i 那么一组数字中只有的区间只有就被分为递增和递减,或者单独的递增,或者单独的递减。 有可能两部分的一个点重合。然后这个区间的种数...
  • KJBU2
  • KJBU2
  • 2015年08月18日 20:01
  • 415

hdu 5400

题意:先给出三个正整数n,d1,d2,再给出含n个数的序列,求这个序列中有多少个区间满足以下几个条件之一:                 1:这个区间是一个等差数列,且公差为d1或d2;    ...
  • u013475704
  • u013475704
  • 2015年08月18日 18:00
  • 476

hdu 5400 等差数列

#include #include #include #include #include #include #include #include #include #include using name...
  • zjck1995
  • zjck1995
  • 2015年08月18日 18:27
  • 169

hdu 5400 Arithmetic Sequence

hdu 5400 Arithmetic Sequence分析: 首先预处理出来出ii这个位置向前d_1 d​1的等差序列; 向后d_2 d​2的等差数列能延续到多长,记作l_i,r_i l​i,r...
  • u013514722
  • u013514722
  • 2015年08月18日 23:41
  • 481

HDU 5400 Arithmetic Sequence

HDU 5400 Arithmetic Sequence /** HDU 5400 Arithmetic Sequence 直接预处理求解就好了 预处理找出以a[i]结尾最长的subArr长度(满足...
  • mitic
  • mitic
  • 2015年08月19日 13:09
  • 496

hdu 5400 Arithmetic Sequence

click here~~ ***Arithmetic Sequence***Problem DescriptionA sequence b1,b2,⋯,...
  • qingshui23
  • qingshui23
  • 2015年08月19日 23:05
  • 605

HDU 5400 Arithmetic Sequence

Problem Description A sequence b1,b2,⋯,bn are called (d1,d2)-arithmetic sequence if and only ...
  • jtjy568805874
  • jtjy568805874
  • 2015年08月18日 17:08
  • 373

hdu 5400 Arithmetic Sequence(计数)

题目链接:hdu 5400 Arithmetic Sequence #include #include #include using namespace std; const int...
  • u011328934
  • u011328934
  • 2015年08月19日 23:59
  • 352

Hdu 5400 Arithmetic Sequence 数学推理

Arithmetic SequenceTime Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Other...
  • sinat_35406909
  • sinat_35406909
  • 2017年08月17日 04:54
  • 149

tjut 5400

//一个序列,两个公差d1,d2   //问有多少个区间使得这个区间存在一个点,它的左边是公差为d1的序列   //它的右边是公差为d2的序列   //直接存入每个点向左和向右延伸的公差长度,乘一下就...
  • luozhong11
  • luozhong11
  • 2016年07月20日 21:17
  • 98
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:hdu 5400
举报原因:
原因补充:

(最多只允许输入30个字)