题目链接:http://acm.hdu.edu.cn/showproblem.php?

pid=5400

题意:给定等差数列的差值d1,d2。问长度为n的数列中有多少个满足条件的子序列,条件为子序列中存在一个xi满足前半段是差值为d1的等差数列,后半段是差值为d2的等差数列

思路:

首先预处理出来出ii这个位置向前d_1d​1​​的等差序列和向后d_2d​2​​的等差数列能延续到多长,记作l_i,r_il​i​​,r​i​​。

假设d_1\neq
d_2d​1​​≠d​2​​,那么枚举中间位置。答案为l_i*r_il​i​​∗r​i​​。

假设d_1=d_2d​1​​=d​2​​。枚举開始位置,答案为r_ir​i​​。

代码:

#include <cstdlib>

#include <cctype>

#include <cstring>

#include <cstdio>

#include <cmath>

#include <algorithm>

#include <vector>

#include <string>

#include <iostream>

#include <sstream>

#include <map>

#include <set>

#include <queue>

#include <stack>

#include <fstream>

#include <numeric>

#include <iomanip>

#include <bitset>

#include <list>

#include <stdexcept>

#include <functional>

#include <utility>

#include <ctime>

#include <cassert>

#include <complex>

using namespace std;

#define ll long long

const int N=101000;

int n,d1,d2,a[N],l[N],r[N];

ll ans;

int main()

{

    while (scanf("%d%d%d",&n,&d1,&d2)!=EOF)

    {

        for(int i=0; i<n; i++)

            scanf("%d",&a[i]);

        for(int i=0; i<n; i++)

        {

            if (i==0||a[i-1]+d1!=a[i])

                l[i]=1;

            else

                l[i]=l[i-1]+1;

        }





        for(int i=n-1; i>=0; i--)

        {

            if (i==n-1||a[i]+d2!=a[i+1])

                r[i]=1;

            else

                r[i]=r[i+1]+1;

        }

        ans=0;

        for(int i=0; i<n; i++)

        {

            if (d1!=d2)

                ans+=(ll)l[i]*r[i];

            else

                ans+=r[i];

        }

        printf("%lld\n",ans);

    }

}

多校第九场Arithmetic Sequence题解的更多相关文章

  1. 2018 Multi-University Training Contest 9 杭电多校第九场 (有坑待补)

    咕咕咕了太久  多校博客直接从第三场跳到了第九场orz 见谅见谅(会补的!) 明明最后看下来是dp场 但是硬生生被我们做成了组合数专场…… 听说jls把我们用组合数做的题都用dp来了遍 这里只放了用组 ...

  2. 牛客多校第九场 && ZOJ3774 The power of Fibonacci(二次剩余定理+斐波那契数列通项/循环节)题解

    题意1.1: 求\(\sum_{i=1}^n Fib^m\mod 1e9+9\),\(n\in[1, 1e9], m\in[1, 1e4]\) 思路1.1 我们首先需要知道斐波那契数列的通项是:\(F ...

  3. 2019牛客多校第九场B Quadratic equation(二次剩余定理)题解

    题意: 传送门 已知\(0 <= x <= y < p, p = 1e9 + 7\)且有 \((x+y) = b\mod p\) \((x\times y)=c\mod p\) 求解 ...

  4. 牛客多校第九场H Cutting Bamboos(主席树 区间比k小的个数)题解

    题意: 标记为\(1-n\)的竹子,\(q\)个询问,每次给出\(l,r,x,y\).要求为砍区间\(l,r\)的柱子,要求砍\(y\)次把所有竹子砍完,每次砍的时候选一个高度,把比他高的都砍下来,并 ...

  5. Cutting Bamboos(2019年牛客多校第九场H题+二分+主席树)

    题目链接 传送门 题意 有\(n\)棵竹子,然后有\(q\)次操作,每次操作给你\(l,r,x,y\),表示对\([l,r]\)区间的竹子砍\(y\)次,每次砍伐的长度和相等(自己定砍伐的高度\(le ...

  6. 杭电多校第九场 hdu6425 Rikka with Badminton 组合数学 思维

    Rikka with Badminton Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/O ...

  7. 2019 湖南多校第一场(2018~2019NCPC) 题解

    解题过程 开场shl过B,C,然后lfw写J,J WA了以后shl写A,但是因为OJ上空间开小WA了,而不是MLE?,J加了特判过了.之后一直在检查A错哪了,直到qt发现问题改了空间,浪费许多时间,但 ...

  8. 218多校第九场 HDU 6424 (数学)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6424 题意:定义f(A) = log log log log …. (A个log) n ,g[A,B, ...

  9. 2018多校第九场 HDU 6416 (DP+前缀和优化)

    转自:https://blog.csdn.net/CatDsy/article/details/81876341 #include <bits/stdc++.h> using namesp ...

随机推荐

  1. Java并发(一):多线程干货总结

    一.进程 线程 进程:一个进程来对应一个程序, 每个进程对应一定的内存地址空间,并且只能使用它自己的内存空间,各个进程间互不干扰. 进程保存了程序每个时刻的运行状态,这样就为进程切换提供了可能.当进程 ...

  2. Erlang学习记录(一)——Windows下的环境搭建

    一.安装编译器 在http://www.erlang.org/download.html下载R16B01 Windows Binary File并安装. 二.运行编译器 安装完编译器后,打开安装目录下 ...

  3. React-Router入门

    之前自己有在用React来重构之前写过的自己工作室官网,其中有用到React中的核心思想:组件,props,state.还有用Rap的接口来实现前后端交互请求(就是请求团队成员的信息部分).自己觉得还 ...

  4. GMT-CMSP系统维护步骤整理

    一.关闭前端各服务1.北京代理,韩国代理节点nginx/etc/init.d/nginx stop2.关闭WEB1,WEB2 NGINX和PHPpkill nginx && pkill ...

  5. TCP协议中的重传、慢启动、SACK、窗口的概念

    重传机制     慢启动相关的几个状态说明该     SACK机制     窗口在TCP传输机制中的作用

  6. ArcGIS10.1如何将数据库注册到ARCSERVER服务器

    原文链接:http://www.cnblogs.com/hanchan/archive/2013/09/24/3337034.html 一.了解ArcGIS Server以及如何利用ArcServer ...

  7. ERDAS遥感图像配准、及其它一些基本处理

    内容中包含 base64string 图片造成字符过多,拒绝显示

  8. PVS-Studio静态通用分析规则

    通用分析 PVS - Studio产品包含了一套通用静态分析规则,用于检测在C / C ++/ C+11应用程序中大范围内的各种缺陷. 通用的规则集帮助您发现逻辑错误,拼写错误,导致访问冲突的代码片段 ...

  9. ckfinder在IE10,IE9中的弹出框不能选择,或者不能上传解决方法

    在IE9,或IE10中ckfinder在IE10,IE9中的弹出框不能选择,或者不能上传解决方法   把弹出框嵌入到jquery dialog中.可以解决 I did: // javascript f ...

  10. (转)RedHat/CentOS安装和配置kerberos

    RedHat/CentOS安装和配置kerberos 需要在kerberos server和客户端都先安装ntp (Internet时间协议,保证服务器和客户机时间同步 ) 1  kerberos 服 ...