Problem Statement

There are NN buildings along the AtCoder Street, numbered 11 through NN from west to east. Initially, Buildings 1,2,…,N1,2,…,N have the heights of A1,A2,…,ANA1,A2,…,AN, respectively.

Takahashi, the president of ARC Wrecker, Inc., plans to choose integers ll and rr (1≤l<r≤N)(1≤l<r≤N) and make the heights of Buildings l,l+1,…,rl,l+1,…,r all zero.
To do so, he can use the following two kinds of operations any number of times in any order:

  • Set an integer xx (l≤x≤r−1)(l≤x≤r−1) and increase the heights of Buildings xx and x+1x+1 by 11 each.
  • Set an integer xx (l≤x≤r−1)(l≤x≤r−1) and decrease the heights of Buildings xx and x+1x+1 by 11 each. This operation can only be done when both of those buildings have heights of 11 or greater.

Note that the range of xx depends on (l,r)(l,r).

How many choices of (l,r)(l,r) are there where Takahashi can realize his plan?

Constraints

  • 2≤N≤3000002≤N≤300000
  • 1≤Ai≤1091≤Ai≤109 (1≤i≤N)(1≤i≤N)
  • All values in input are integers.

Input

Input is given from Standard Input in the following format:

NN
A1A1 A2A2 ⋯⋯ ANAN

Output

Print the answer.


Sample Input 1

5
5 8 8 6 6

Sample Output 1

3

Takahashi can realize his plan for (l,r)=(2,3),(4,5),(2,5)(l,r)=(2,3),(4,5),(2,5).

For example, for (l,r)=(2,5)(l,r)=(2,5), the following sequence of operations make the heights of Buildings 2,3,4,52,3,4,5 all zero.

  • Decrease the heights of Buildings 44 and 55 by 11 each, six times in a row.
  • Decrease the heights of Buildings 22 and 33 by 11 each, eight times in a row.

For the remaining seven choices of (l,r)(l,r), there is no sequence of operations that can realize his plan.


Sample Input 2

7
12 8 11 3 3 13 2

Sample Output 2

3

Takahashi can realize his plan for (l,r)=(2,4),(3,7),(4,5)(l,r)=(2,4),(3,7),(4,5).

For example, for (l,r)=(3,7)(l,r)=(3,7), the following figure shows one possible solution.


Sample Input 3

10
8 6 3 9 5 4 7 2 1 10

Sample Output 3

1

Takahashi can realize his plan for (l,r)=(3,8)(l,r)=(3,8) only.


Sample Input 4

14
630551244 683685976 249199599 863395255 667330388 617766025 564631293 614195656 944865979 277535591 390222868 527065404 136842536 971731491

Sample Output 4

8

题意:

有 n 个数,每次可以将 a[x],a[x+1] 同时 +1/-1 ,问存在多少区间同时减为 0

题解:

直觉告诉我用差分来做,然后模拟出来的结果时间复杂度都是 O(n^2)

直到看到了 hu_tao 大佬的讨论,一语惊醒,每次操作一定是将一个奇数位和偶数位同时操作,所以无论怎么变一个区间想要同时变为 0,那么这个区间上奇数位置和偶数位置的加和是相同的;

所以将奇数位置处的值置为负数,利用同余定理,就可以找到任意一个连续的子段加和为 0

const int N=1e6+5;

    int n, m, _;
int i, j, k;
ll a[N];
map<ll,int> mp; signed main()
{
//IOS;
while(~sd(n)){
for(int i=1;i<=n;i++){
sll(a[i]);
if(i%2==0) a[i]=-a[i];
}
ll ans=0;
mp[0]++;
for(int i=1;i<=n;i++){
a[i]+=a[i-1];
if(mp[a[i]]) ans+=mp[a[i]];
mp[a[i]]++;
}
pll(ans);
mp.clear();
}
//PAUSE;
return 0;
}

AtCoder Regular Contest 119 C - ARC Wrecker 2(同余定理+思维)的更多相关文章

  1. AtCoder Regular Contest 094 (ARC094) CDE题解

    原文链接http://www.cnblogs.com/zhouzhendong/p/8735114.html $AtCoder\ Regular\ Contest\ 094(ARC094)\ CDE$ ...

  2. AtCoder Regular Contest 061

    AtCoder Regular Contest 061 C.Many Formulas 题意 给长度不超过\(10\)且由\(0\)到\(9\)数字组成的串S. 可以在两数字间放\(+\)号. 求所有 ...

  3. AtCoder Regular Contest 092

    AtCoder Regular Contest 092 C - 2D Plane 2N Points 题意: 二维平面上给了\(2N\)个点,其中\(N\)个是\(A\)类点,\(N\)个是\(B\) ...

  4. AtCoder Regular Contest 093

    AtCoder Regular Contest 093 C - Traveling Plan 题意: 给定n个点,求出删去i号点时,按顺序从起点到一号点走到n号点最后回到起点所走的路程是多少. \(n ...

  5. AtCoder Regular Contest 094

    AtCoder Regular Contest 094 C - Same Integers 题意: 给定\(a,b,c\)三个数,可以进行两个操作:1.把一个数+2:2.把任意两个数+1.求最少需要几 ...

  6. AtCoder Regular Contest 095

    AtCoder Regular Contest 095 C - Many Medians 题意: 给出n个数,求出去掉第i个数之后所有数的中位数,保证n是偶数. \(n\le 200000\) 分析: ...

  7. AtCoder Regular Contest 102

    AtCoder Regular Contest 102 C - Triangular Relationship 题意: 给出n,k求有多少个不大于n的三元组,使其中两两数字的和都是k的倍数,数字可以重 ...

  8. AtCoder Regular Contest 096

    AtCoder Regular Contest 096 C - Many Medians 题意: 有A,B两种匹萨和三种购买方案,买一个A,买一个B,买半个A和半个B,花费分别为a,b,c. 求买X个 ...

  9. AtCoder Regular Contest 097

    AtCoder Regular Contest 097 C - K-th Substring 题意: 求一个长度小于等于5000的字符串的第K小子串,相同子串算一个. K<=5. 分析: 一眼看 ...

随机推荐

  1. JUC包的线程池详解

    为什么要使用线程池 创建/销毁线程需要消耗系统资源,线程池可以复用已创建的线程. 控制并发的数量.并发数量过多,可能会导致资源消耗过多,从而造成服务器崩溃.(主要原因) 可以对线程做统一管理. JUC ...

  2. Jenkins 自定义构建结果

    1. Jenkins 构建原理 2. 脚本执行失败立即停止执行 3. 脚本执行失败继续后面的执行但最终的结果是构建失败 1. Jenkins 构建原理 Jenkins 的构建成功和脚本执行成功是两个事 ...

  3. kafka配置内外网访问

    使用docker简单部署测试 zookeeper mkdir data conf chmod 777 data 启动命令 docker run -itd -p 2181:2181 -e ALLOW_A ...

  4. Nginx篇

    1 基本操作命令 先CD到nginx.exe目录 启动nginx服务 nginx start nginx 优雅停止nginx,有连接时会等连接请求完成再杀死worker进程 nginx -s quit ...

  5. mysqli_fetch_array()、mysqli_fetch_assoc、mysqli_fetch_row()和mysqli_fetch_object()的区别

    mysqli_fetch_array() 来使用或输出所有查询的数据. mysqli_fetch_array() 函数从结果集中取得一行作为关联数组,或数字数组,或二者兼有 返回根据从结果集取得的行生 ...

  6. fullpage.js用法总结

    兼容性: 支持 IE8+ 及其他现代浏览器. 主要功能: 1.支持鼠标滚动: 2.支持前进后退键盘控制; 3.多个回调函数; 4.支持手机.移动设备; 5.支持窗口缩放自动调整; 6.可设置滚动宽度. ...

  7. hdu2846 字典树(带id的)

    题意:      给你一些模式串,然后给你一些提问,每个提问是给你一个串,问你这个串在上 面的模式串中出现的次数. 思路:       一开始想到hash,但是因为用的是map,所以超时了,map的操 ...

  8. 【我给面试官画饼】Python自动化测试面试题精讲

    那今天给家分享的是一个面试主题. 就比如说我们的自动化测试,自动化如何去应对面试官,和面试官去聊一聊自动化的心得,自动化你现在去面试的时候是一个非常重要的一个关键点,所以如果你在这方面有一定的心得.那 ...

  9. C# 泛型Generic

    泛型(Generic),是将不确定的类型预先定义下来的一种C#高级语法,我们在使用一个类,接口或者方法前,不知道用户将来传什么类型,或者我们写的类,接口或方法相同的代码可以服务不同的类型,就可以定义为 ...

  10. c++通讯录管理系统

    代码拷贝 #include<iostream> #include<string> #include<stdlib.h> #define MAX 1000 using ...