hdu5400
来源:互联网 发布:手机qq数据迁移 编辑:程序博客网 时间:2024/05/03 11:05
大水题,但wa了几次。。。
思路:用一个数组保存相邻两数的差,然后过一遍数组,连续的b2可以,连续的b1之后再连续的b2也可以.。这题的个数用longlong,这个注意到了,我用len表示来连续的个数,sum+=(len+1)*len/2;我len用int保存,这里int会爆掉。。。逗比错误啊
#include <iostream>#include<cstring>#include<stdio.h>using namespace std;const int M=1e5+20;typedef long long ll;int a[M],b[M];int main(){ int n,b1,b2; while(~scanf("%d",&n)) { int i,j; scanf("%d%d",&b1,&b2); scanf("%d",&a[0]); for(i=1;i<n;i++) { scanf("%d",&a[i]); b[i-1]=a[i]-a[i-1]; } i=0; ll sum=n; ll len=0; //把没有价值的数去掉 while(i<n-1&&b[i]!=b1&&b[i]!=b2) i++; while(i<n-1) { if(b[i]==b2) { while(i<n-1&&b[i]==b2) { i++; len++; } sum+=len*(len+1)/2; while(i<n-1&&b[i]!=b1&&b[i]!=b2) i++; len=0; } if(i==n-1) break; if(b[i]==b1) { while(i<n-1&&b[i]==b1) { i++; len++; } if(i==n-1) { sum+=(len+1)*len/2; break; } if(b[i]==b2) { while(i<n-1&&b[i]==b2) { i++; len++; } } sum+=len*(len+1)/2; while(i<n-1&&b[i]!=b1&&b[i]!=b2) i++; len=0; } } cout<<sum<<endl; } return 0;}
0 0
- hdu5400
- hdu5400
- hdu5400(计数)
- hdu5400(模拟)
- HDU5400 Arithmetic Sequence 数学题
- hdu5400--Arithmetic Sequence
- hdu5400 Arithmetic Sequence
- 2015 多校联赛 ——HDU5400(水)
- GAME
- android studio安装配置问题和安装genymotion及UI无法预览问题解决
- HDU 2868 Neighbor Friend
- 常用服务器 整理
- hdu5399 思考的细节比较多
- hdu5400
- Codeforces Round #316 (Div. 2) C. Replacement(线段树)
- 文通Android/iOS平台车牌识别
- Android基础之用Eclipse搭建Android开发环境和创建第一个Android项目(Windows平台)
- 指针的各种形式
- 积跬步,聚小流------具有滑动效果的导航
- 关于百度地图打包后地图功能不能用的解决办法
- MFC:利用CImage动态加载图像,无需Picture Control控件
- TCP/IP,http,socket,长连接,短连接