主要是要知道它对于等差数列的定义,单个数也可以作为等差数列且一定满足题意,另外就是要算清楚区间与区间的关系,考虑两大类情况,一种是d1区间和d2区间连在一起,另外一种情况就是其余情况。

 #include<iostream>
#include<cstdio>
#include<cstring>
#define MAXN 100005
long long num[MAXN];
bool tag[MAXN];
using namespace std;
long long getNum(long long x){
return (x)*(x+)/;
}
int main(){
long long n,d1,d2,i,j,k,left,right,l_sum,r_sum,sum;
bool isRL = false;
while(scanf("%lld%lld%lld",&n,&d1,&d2)!=EOF){
for(i = ;i < n ;i++){
scanf("%lld",&num[i]);
}
for(i = ;i < n- ; i++){
num[i] = num[i+] - num[i];
}
memset(tag,false,sizeof(tag));
l_sum = ;
r_sum = ;
sum = ;
for(i = ;i < n- ; i++)//d1区间与d2区间连在一起
{
if(tag[i] == true)
continue;
if(num[i]==d1 && num[i+]==d2){
tag[i] = true;
tag[i+] = true;
l_sum = ;
r_sum = ;
for(j = i- ; j>= ; j--){
if(num[j] == d1){
l_sum ++;
tag[j]= true;
}
else
break;
}
for(j = i+ ; j< n- ; j++){
if(num[j] == d2){
r_sum ++;
tag[j]= true;
}
else
break;
}
sum = sum + l_sum*r_sum +getNum(l_sum) + getNum(r_sum);
}
}
k = ;
for(i = ;i < n-;i++){//其余情况
if(tag[i]==true)
continue;
if(num[i]==d1){
k = ;
for(j = i+ ; j<n-;j++){
if(num[j]==d1){
k++;
i = j;
tag[j] = true;
}
else {
i = j-;
break;
}
}
sum = sum+getNum(k);
}
else if(num[i]==d2){
k = ;
for(j = i+ ; j<n-;j++){
if(num[j]==d2){
k++;
i = j;
tag[j] = true;
}
else {
i = j-;
break;
}
}
sum = sum+getNum(k);
}
else
{
continue;
}
}
sum+=n;
printf("%lld\n",sum);
}
return ;
}

水题 等差数列HDU 5400 Arithmetic Sequence的更多相关文章

  1. hdu 5400 Arithmetic Sequence

    http://acm.hdu.edu.cn/showproblem.php?pid=5400 Arithmetic Sequence Time Limit: 4000/2000 MS (Java/Ot ...

  2. hdu 5400 Arithmetic Sequence(模拟)

    Problem Description A sequence b1,b2,⋯,bn are called (d1,d2)-arithmetic sequence ≤i≤n) such that ≤j& ...

  3. hdoj 5400 Arithmetic Sequence

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5400 水题 #include<stdio.h> typedef long long LL; ...

  4. 水题:HDU 5112 A Curious Matt

    Description There is a curious man called Matt. One day, Matt's best friend Ted is wandering on the ...

  5. 水题:HDU 5119 Happy Matt Friends

    Matt has N friends. They are playing a game together.Each of Matt's friends has a magic number. In t ...

  6. (水题)HDU - 1077 - Catching Fish - 计算几何

    http://acm.hdu.edu.cn/showproblem.php?pid=1077 很明显这样的圆,必定有两个点在边界上.n平方枚举圆,再n立方暴力判断.由于没有给T,所以不知道行不行.

  7. 构造 HDOJ 5400 Arithmetic Sequence

    题目传送门 题意:问有多少个区间,其中存在j使得ai + d1 == ai+1(i<j) && ai + d2 == ai+1 (i>j) 构造:用c1[i], c2[i] ...

  8. (模拟)Arithmetic Sequence -- HDU -- 5400

    链接: http://acm.hdu.edu.cn/showproblem.php?pid=5400 Time Limit: 4000/2000 MS (Java/Others)    Memory ...

  9. hdu 1005:Number Sequence(水题)

    Number Sequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

随机推荐

  1. win7激活附带激活软件

    链接: https://pan.baidu.com/s/1i46yoHR 密码: 7k6y

  2. UITextView的一些技巧

      1.在指定位置插入字符串:   NSMutableString *TextViewStr=[[NSMutableString alloc] initWithString:TextView.text ...

  3. 【BZOJ3110】[Zjoi2013]K大数查询 树套树

    [BZOJ3110][Zjoi2013]K大数查询 Description 有N个位置,M个操作.操作有两种,每次操作如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c,如果 ...

  4. 扩容数据盘_Linux

    扩容数据盘_Linux_扩容云盘_云盘_用户指南_云服务器 ECS-阿里云 https://help.aliyun.com/document_detail/25452.html 磁盘扩容付费后: 在控 ...

  5. 3行代码 多元线性方程组 rank=4 多元-一元 降元

    对于线性方程组Ax=b 对A和b执行同样的一串行初等运算, 那么该方程组的解集不发生变化. [未知-已知   高阶--低阶] http://mathworld.wolfram.com/CramersR ...

  6. PHP 格式化数字串

    在xls或csv文件中, 超过12位以上的数字会被"科学计数", 所以当php读取这些文件的时候, 会读成 420E+16 , 显然这不是我们想要的, 所以就要用到数字格式化了! ...

  7. 开启unity3D的学习之路

    2014年5月11号.我開始了我的Unity3D的学习之路.我将在此记录我学习过程中各个进程,这样在将来的某天,自己忘记了某部分内容时.也能够回过头来复习一下.

  8. HTML——列表的相关知识

    核心知识点: 1.无序列表: ul>li 2.有序列表:ol>li 3.标题列表:dl(标签)>dt(标题)>dd(选项) 4.表格:table>thead(>tr ...

  9. Builder 模式初探

    Builder 模式是一步一步创建一个复杂对象的创建型模式,它允许用户在不知道内部构建细节的情况下,可以更精细的控制对象的构造流程.该模式是为了将构建复杂对象的过程和它的部件解耦,使得构建过程和部件的 ...

  10. ubuntu下安装redis以及redis客户端在mac下的使用

    ubuntu下安装redis http://blog.fens.me/linux-redis-install/ 此方式利用brew安装包去获取最新的rdm客户端 资源失效了 https://www.j ...