zoukankan      html  css  js  c++  java
  • Petrozavodsk Summer Training Camp 2015 Day 2: Xudyh (TooSimple) Contest, Saturday, August 22, 2015 E题

    Problem E. Arithmetic Sequence Input file: standard input Output file: standard output Time limit: 1 seconds Memory limit: 64 mebibytes 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 First line of the input contains one integer T (1 ≤ T ≤ 15) — number of 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 ).

    题目分析:

    只和差分有关,存一个差分数组,找出形如 d1,d1...d1,d2,d2...d2,的统计方案数

    #include<bits/stdc++.h>
    using namespace std;
    
    typedef long long ll;
    const int MAXN = 1e5+100;
    ll a[MAXN];
    ll b[MAXN];
    void Run()
    {
        int n;
        ll d1,d2;
        scanf("%d%lld%lld",&n,&d1,&d2);
        for(int i=0;i<n;i++)    scanf("%lld",a+i);
        for(int i=0;i<n-1;i++)  b[i]=a[i+1]-a[i];
        int L,M,R;
        ll cnt1=0,cnt2=0;
        ll ans=n;
        n=n-2;
        //for(int i=0;i<=n;i++)   cout<<b[i]<<endl;
        int i=0;
        while(i<=n)
        {
            while(i<=n&&(b[i]!=d1&&(b[i]!=d2)))  i++;
            cnt1=0;
            while(i<=n&&b[i]==d1)   cnt1++,i++;
            cnt2=0;
            while(i<=n&&b[i]==d2)   cnt2++,i++;
            ans+=(cnt1*cnt2+(cnt1*cnt1+cnt1)/2+(cnt2*cnt2+cnt2)/2);
        }
    
        printf("%lld",ans);
    }
    int main()
    {
        int T;
        scanf("%d",&T);
        while(T--)
        {
            Run();
            printf("
    ");
        }
        return 0;
    }
  • 相关阅读:
    JDBC的PreparedStatement是什么?
    Jquery的基本使用方式
    ArrayList,LinkedList,Vector的区别
    数据库连接池的原理。为什么要使用连接池
    .java.util.Date和java.sql.Date有什么区别?
    JDBC的PreparedStatement是什么?
    .Spring Boot 有哪些优点?
    Redis中的常用命令哪些?
    【mybatis-plus】分页、逻辑删除
    MySQL全面瓦解15:视图
  • 原文地址:https://www.cnblogs.com/poler/p/7359618.html
Copyright © 2011-2022 走看看