HDU 5400
来源:互联网 发布:淘宝电动车专卖店 编辑:程序博客网 时间:2024/06/05 07:11
题意:问你[1 ,n]之间有多少个连续区间[l,r] 满足存在一个l<=j<=r,当l<j<i,这部分输数字以d2为等差区间
i<=j<r.这部分数字以d2为等差区间
那么一组数字中只有的区间只有以d1和d2、或者d1、或者d2、或者 没有d1和d2(本身)这几种情况。
有可能两部分的一个点重合。
然后这个区间的种数就是(长度+1)*长度/2;
#include<stdio.h>#include<string.h>const int N=1e5+10;int main(){ int n,d1,d2,a[N],vis[N],vis2[N]; while(scanf("%d%d%d",&n,&d1,&d2)!=EOF) { for(int i=1; i<=n; i++) scanf("%d",&a[i]); memset(vis,0,sizeof(vis)); memset(vis2,0,sizeof(vis2)); for(int i=1; i<n; i++) { if(a[i]+d1==a[i+1])vis[i]=1; if(a[i]+d2==a[i+1])vis2[i]=1; }// for(int i=1; i<=n; i++)// printf("%d ",vis[i]);// puts("");// for(int i=1; i<=n; i++)// printf("%d ",vis2[i]);// puts(""); // puts("ASJD"); long long sum=n; for(int i=1; i<=n; i++) { int cnt=1; if(vis[i]==1) { int t=-1; for(int j=i; j<=n; j++) if(vis[j]==1) { cnt++; vis2[j]=0; } else { t=j; break; } i+=cnt-1; //printf("!!i %d\n",i,cnt); if(t!=-1) for(int j=t; j<=n; j++) if(vis2[j]==1) { cnt++; vis2[j]=0; } else { break; } cnt-=1; //printf("%d\n",cnt); sum+=(long long)(1+cnt)*cnt/2; } } //printf("%d\n",sum);// for(int i=1; i<=n; i++)// {// printf("%d ",vis2[i]);// } for(int i=1; i<=n; i++) { int cnt=1; if(vis2[i]==1) { for(int j=i; j<=n; j++) if(vis2[j]==1) cnt++; else break; cnt-=1; i+=cnt; sum+=(long long)(1+cnt)*cnt/2; } } printf("%lld\n",sum); } return 0;}/*5 0 01 1 1 1 18 4 21 -1 -1 -1 8 8 4 68 2 -22 3 6 8 6 4 4 02 5 85 15 2 -22 4 2 4 28 1 -11 2 3 2 1 2 4 58 1 -13 2 1 2 3 2 1 25 1 -11 2 3 2 1*/
0 0
- hdu 5400
- HDU 5400
- hdu 5400
- hdu 5400
- HDU 5400 Arithmetic Sequence
- hdu 5400 等差数列
- hdu 5400 Arithmetic Sequence
- HDU 5400 Arithmetic Sequence
- HDU 5400 Arithmetic Sequence
- HDU 5400 Arithmetic Sequence
- hdu 5400 Arithmetic Sequence
- hdu 5400 Arithmetic Sequence
- hdu 5400 Arithmetic Sequence
- hdu
- hdu
- HDU
- hdu ()
- hdu
- cocos2d-x开发日志09 —— Vector
- 欢迎使用CSDN-markdown编辑器
- Cloud Insight 数据管理平台 Beta 版上线
- 高德地图
- Android与JS互相调用以及注意
- HDU 5400
- UVALive 6129 Sofa, So Good
- HDU 5396 - Expression(区间DP)
- Android入门
- FMDB开启事务
- mmseg 中文分词
- UI-KVO设计模式Demo
- Spark 学习入门教程
- struts2和springMVC的比较(超详细)