标签:
5 2 -2 0 2 0 -2 0 5 2 3 2 3 3 3 3
12 5
/* *********************************************** Author :CKboss Created Time :2015年08月18日 星期二 12时21分22秒 File Name :1005.cpp ************************************************ */ #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <string> #include <cmath> #include <cstdlib> #include <vector> #include <queue> #include <set> #include <map> using namespace std; typedef pair<int,int> pII; typedef long long int LL; const int maxn=100100; const int INF=0x3f3f3f3f; int n,d1,d2; int a[maxn]; LL ans; vector<pII> up,down; void bd2() { LL aaa=n-1; for(int i=0,sz=up.size();i<sz;i++) { pII pi=up[i]; LL dur=pi.second-pi.first+1; aaa+=dur*(dur-1)/2; } cout<<aaa<<endl; } int main() { //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); while(scanf("%d%d%d",&n,&d1,&d2)!=EOF) { ans=n; up.clear(); down.clear(); /// one duan int left=-1,right=-1; int Left=-1,Right=-1; bool cl=false; bool Cl=false; for(int i=1;i<=n;i++) scanf("%d",a+i); a[n+1]=INF; n++; for(int i=1;i<=n;i++) { if(i>1) { int ca=a[i]-a[i-1]; if(ca==d1) { if(left==-1) { left=i-1; right=i; cl=true; } else right=i; } else { if(cl==true) { up.push_back(make_pair(left,right)); left=right=-1; cl=false; } } } if(i>1) { int ca=a[i]-a[i-1]; if(ca==d2) { if(Left==-1) { Left=i-1; Right=i; Cl=true; } else Right=i; } else { if(Cl==true) { down.push_back(make_pair(Left,Right)); Left=Right=-1; Cl=false; } } } } if(d1==d2) { bd2(); continue; } /// single duan for(int i=0,sz=up.size();i<sz;i++) { pII pi=up[i]; LL dur=pi.second-pi.first+1; ans+=dur*(dur-1)/2; } for(int i=0,sz=down.size();i<sz;i++) { pII pi=down[i]; LL dur=pi.second-pi.first+1; ans+=dur*(dur-1)/2; } /// double duan for(int i=0,j=0,sz1=up.size(),sz2=down.size();i<sz1&&j<sz2;) { if(up[i].second==down[j].first) { LL duan1=up[i].second-up[i].first; LL duan2=down[j].second-down[j].first; ans+=duan1*duan2; i++; j++; } else { if(up[i].second>down[j].first) j++; else if(up[i].second<down[j].first) i++; } } printf("%lld\n",ans); } return 0; }
版权声明:来自: 码代码的猿猿的AC之路 http://blog.csdn.net/ck_boss
HDOJ 5400 Arithmetic Sequence 暴力枚举
标签:
原文地址:http://blog.csdn.net/ck_boss/article/details/47765593