链接:

http://acm.hdu.edu.cn/showproblem.php?pid=5400

Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 875    Accepted Submission(s): 386

Problem Description
A sequence b1,b2,⋯,bn are called (d1,d2)-arithmetic sequence if and only if there exist i(1≤i≤n) such that for every j(1≤j<i),bj+1=bj+d1 and for every j(i≤j<n),bj+1=bj+d2.

Teacher Mai has a sequence a1,a2,⋯,an. He wants to know how many intervals [l,r](1≤l≤r≤n) there are that al,al+1,⋯,ar are (d1,d2)-arithmetic sequence.

 
Input
There are multiple test cases.

For each test case, the first line contains three numbers n,d1,d2(1≤n≤105,|d1|,|d2|≤1000), the next line contains n integers a1,a2,⋯,an(|ai|≤109).

 
Output
For each test case, print the answer.
 
Sample Input
5 2 -2     0 2 0 -2 0      5 2 3    2 3 3 3 3
 
Sample Output
12    5
 
 
 
 
代码:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h> #define N 100005
#define LL long long int a[N], dp[N]; int main()
{
int n, d1, d2; while(scanf("%d%d%d", &n, &d1, &d2)!=EOF)
{
int i; for(i=; i<=n; i++)
scanf("%d", &a[i]); memset(dp, , sizeof(dp)); for(i=; i<n; i++)
{
if(a[i+]==a[i]+d1)
dp[i+] = ;
else if(a[i+]==a[i]+d2)
dp[i+] = ;
else dp[i+] = ;
} LL ans=, tmp=; for(i=; i<=n; i++)
{
if(dp[i]==)
{
if(dp[i-]==) tmp = ;
else tmp++; ans = ans + tmp +;
}
else if(dp[i]==)
{
tmp++;
ans = ans + tmp + ;
}
else
{
ans ++;
tmp = ;
}
} printf("%lld\n", ans); }
return ;
}
#include<stdio.h>
#include<string.h>
#include<stdlib.h> #define N 110000 int a[N]; int main()
{
int n, i, x, y, d1, d2; while(scanf("%d%d%d", &n, &d1, &d2)!=EOF)
{
__int64 s1, s2, sum; s1 = s2 = sum = ;
memset(a, , sizeof(a)); scanf("%d", &x); for(i=; i<n; i++)
{
scanf("%d", &y);
a[i] = y-x;
x = y;
} for(i=; i<n; i++)
{
if(a[i]==d1)
{
if(a[i-]!=d1) s1 = ; s1++;
sum += s1; ///sum加上当前公差为的d1序列长度
s2 = ; ///s2进行清零
}
else if(a[i]==d2)
{
s2++;
sum += s1 + s2; ///加上公差为d2和前半段为d1后半段为d2的序列长度
}
else
s1 = s2 = ;
} printf("%I64d\n", sum+n); ///n是只有一个元素的时候
} return ;
}

(模拟)Arithmetic Sequence -- HDU -- 5400的更多相关文章

  1. hdu 5400 Arithmetic Sequence(模拟)

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

  2. hdu 5400 Arithmetic Sequence

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

  3. Arithmetic Sequence(dp)

    Arithmetic Sequence Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 51  Solved: 19[Submit][Status][We ...

  4. [Swift]LeetCode1027. 最长等差数列 | Longest Arithmetic Sequence

    Given an array A of integers, return the length of the longest arithmetic subsequence in A. Recall t ...

  5. HZAU 21——Arithmetic Sequence——————【暴力 or dp】

    Arithmetic Sequence Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 1810  Solved: 311[Submit][Status] ...

  6. hdu 5400(思路题)

    Arithmetic Sequence Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Othe ...

  7. 华中农业大学第四届程序设计大赛网络同步赛-1020: Arithmetic Sequence,题挺好的,考思路;

    1020: Arithmetic Sequence Time Limit: 1 Sec  Memory Limit: 128 MB Submit:  ->打开链接<- Descriptio ...

  8. LeetCode 1027. Longest Arithmetic Sequence

    原题链接在这里:https://leetcode.com/problems/longest-arithmetic-sequence/ 题目: Given an array A of integers, ...

  9. 【leetcode】1027. Longest Arithmetic Sequence

    题目如下: Given an array A of integers, return the length of the longest arithmetic subsequence in A. Re ...

随机推荐

  1. Java的序列化算法--解释序列后字节含义

    Java的序列化算法 序列化算法一般会按步骤做如下事情: ◆将对象实例相关的类元数据输出. ◆递归地输出类的超类描述直到不再有超类. ◆类元数据完了以后,开始从最顶层的超类开始输出对象实例的实际数据值 ...

  2. HDU 3641 Pseudoprime numbers(快速幂)

    Pseudoprime numbers Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 11336   Accepted: 4 ...

  3. ylbtech-Tool:

    ylbtech-Tool: 1.返回顶部   2.返回顶部   3.返回顶部   4.返回顶部   5.返回顶部     6.返回顶部   7.返回顶部   8.返回顶部   9.返回顶部   10. ...

  4. [JS]常用特效js插件

     网站一:http://www.superslide2.com/ function set_a_title(n) { var t = $.trim($(n).text()); t && ...

  5. 管理Linux服务器的用户和组

    管理Linux服务器的用户和组 Linux操作系统是一个多用户多任务的操作系统,允许多个用户同时登录到系统,使用系统资源. 为了使所有用户的工作顺利进行,保护每个用户的文件和进程,规范每个用户的权限, ...

  6. oracle9i-11.2安装包及补丁包下载链接

    ORACLE 9i Oracle9i Database Release 2 Enterprise/Standard/Personal Edition for Windows NT/2000/XPhtt ...

  7. ImportError: Couldn't import Django.或者提示Django 模块不存在

    ImportError: Couldn't import Django. 或者 多版本的python引起的,执行以下命令  即可解决问题 python3是新的版本的python python3 -m ...

  8. ES6系列_13之Proxy进行预处理(简单学习)

    1.理解什么是预处理? 当我们在操作一个对象或者方法时会有几种动作,比如:在运行函数前初始化一些数据,在改变对象值后做一些善后处理.这些都算钩子函数,Proxy的存在就可以让我们给函数加上这样的钩子函 ...

  9. Apache HBase 集群安装文档

    简介: Apache HBase 是一个分布式的.面向列的开源 NoSQL 数据库.具有高性能.高可靠性.可伸缩.面向列.分布式存储的特性. HBase 的数据文件最终落地在 HDFS 之上,所以在 ...

  10. VML元素的相关资料

    虽然VML已经过气了,但有时我还不得不使用它,下面是我收集或研究得到的一些东西. 判定一个元素是否为VML元素 function isVML(el) { if (el && el.no ...