博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
构造 HDOJ 5400 Arithmetic Sequence
阅读量:6306 次
发布时间:2019-06-22

本文共 1627 字,大约阅读时间需要 5 分钟。

 

题意:问有多少个区间,其中存在j使得ai + d1 == ai+1(i<j) && ai + d2 == ai+1 (i>j)

构造:用c1[i], c2[i]记录i为标杆左边最多几个符合以及右边最多几个符合,那么i的贡献为(c1[i]+1) * (c2[i] + 1);当d1==d2时,找出符合的连续区间,长度记为cnt,那么贡献为(cnt+1) * cnt / 2。

 

/************************************************
* Author        :Running_Time
* Created Time  :2015-8-18 12:27:51
* File Name     :E.cpp
************************************************/
#include <cstdio>
#include <algorithm>
#include <iostream>
#include <sstream>
#include <cstring>
#include <cmath>
#include <string>
#include <vector>
#include <queue>
#include <deque>
#include <stack>
#include <list>
#include <map>
#include <set>
#include <bitset>
#include <cstdlib>
#include <ctime>
using namespace std;
#define lson l, mid, rt << 1
#define rson mid + 1, r, rt << 1 | 1
typedef long long ll;
const int MAXN = 1e5 + 10;
const int INF = 0x3f3f3f3f;
const int MOD = 1e9 + 7;
int a[MAXN];
ll c1[MAXN], c2[MAXN];
int main(void)    {
    //HDOJ 5400 Arithmetic Sequence
   int n, d1, d2;
   while (scanf ("%d%d%d", &n, &d1, &d2) == 3) {
       for (int i=1; i<=n; ++i)    {
           scanf ("%d", &a[i]);
       }
       memset (c1, 0, sizeof (c1));
       memset (c2, 0, sizeof (c2));
       for (int i=2; i<=n; ++i)    {
           if (a[i-1] + d1 == a[i])    c1[i] = c1[i-1] + 1;
       }
       for (int i=n; i>=2; --i)    {
           if (a[i-1] + d2 == a[i])    c2[i-1] = c2[i] + 1;
       }
       ll ans = 0;
       if (d1 == d2)   {
           ll cnt = 1;
           for (int i=2; i<=n; ++i)    {
               if (a[i] - a[i-1] == d1)    cnt++;
               else    {
                   ans += (cnt + 1) * cnt / 2; cnt = 1;
               }
           }
           ans += (cnt + 1) * cnt / 2;
           printf ("%I64d\n", ans);    continue;
       }
       for (int i=1; i<=n; ++i)    {
           ans += (c1[i] + 1) * (c2[i] + 1);
       }
       printf ("%I64d\n", ans);
   }
   return 0;
}

 

转载于:https://www.cnblogs.com/Running-Time/p/4741942.html

你可能感兴趣的文章
rails 字符串 转化为 html
查看>>
java-学习8
查看>>
AOP动态代理
查看>>
Oracle序列
查看>>
xcodebuild命令行编译错误问题解决
查看>>
Yii2.0 下的 load() 方法的使用
查看>>
华为畅玩5 (CUN-AL00) 刷入第三方twrp Recovery 及 root
查看>>
LeetCode----67. Add Binary(java)
查看>>
母版页 MasterPage
查看>>
[转] ReactNative Animated动画详解
查看>>
DNS原理及其解析过程
查看>>
记录自写AFNetWorking封装类
查看>>
没想到cnblog也有月经贴,其实C#值不值钱不重要。
查看>>
【转】LUA内存分析
查看>>
springboot使用schedule定时任务
查看>>
[转] Entity Framework Query Samples for PostgreSQL
查看>>
XDUOJ 1115
查看>>
PHP学习(四)---PHP与数据库MySql
查看>>
模版方法模式--实现的capp流程创建与管理
查看>>
软件需求分析的重要性
查看>>