题目链接: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. 都9102年了,还不会Docker?10分钟带你从入门操作到实战上手

    Docker简述 Docker是一种OS虚拟化技术,是一个开源的应用容器引擎.它可以让开发者将应用打包到一个可移植的容器中,并且该容器可以运行在几乎所有linux系统中(Windows10目前也原生支 ...

  2. JavaScript之几种创建函数的区别以及优缺点。

    工厂模式 function createPerson(name,age,job){ var o = new Object(); o.name = name; o.age = age; o.job = ...

  3. #iOS问题记录#WKWebView 闪退异常

    异常描述: pointer being freed was not allocated *** set a breakpoint in malloc_error_break to debug 问题描述 ...

  4. Linux通用KVM自动安装Shell脚本(兼容所有Linux发行版/CentOS/Ubuntu)

    官网: https://github.com/retspen/webvirtmgr/wiki/Setup-Host-Server 安装: wget -O - https://retspen.githu ...

  5. 使用hosts.allow和hosts.deny实现简单的防火墙

    说明:我建议学习防火墙只单一学习一种就够了,这种方式虽然简单和快速,但也有些不太灵活,所以如果要深入防火墙建议转iptables  一.背景简介 在Linux上多用iptables来限制ssh和tel ...

  6. hdu1428漫步校园

    #include <queue> #include <iostream> #include <algorithm> #include <cstring> ...

  7. 【mysql】更新“”空字符串为NULL

    mysql中NULL和“”是完全不同的概念,因此出现了“”导致NULL不可查的问题出现,那怎么能将一个字段设置为NULL呢? update goods_type gt set gt.parent_ui ...

  8. [转]CodeSmith 基础教程

    本文转自:http://www.cnblogs.com/sorex/archive/2009/12/24/1631533.html 〇.            前言 最近两天自己写了个简单的ORM框架 ...

  9. scrapy 抓取数据被禁止的解决方法

    在用抓取头条新闻的数据时出现以下问题:禁止抓取,结果数据没有出来 后来经过查询得知需要把settings.py里面 修改为ROBOTSTXT_OBEY = False就可以了, 默认True

  10. Android OpenGL加入光照和材料属性

    转载请注明出处:[huachao1001的专栏:http://blog.csdn.net/huachao1001] 在上一篇文章[ Android OpenGL显示随意3D模型文件 ]中.我们学习了怎 ...