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. JDBC_04_使用Properties集合保存JDBC所需配置信息

    使用Properties集合保存JDBC所需配置信息 将JDBC连接所需的配置信息保存在一个配置文件中,然后使用Properties将该信息存储起来,动态的完成JDBC的配置连接 代码: import ...

  2. .NET6 平台系列4 .NET开源之路

    系列目录     [已更新最新开发文章,点击查看详细] .NET平台是微软于2000年推出的Windows操作系统的应用软件开发框架,发展至今形成巨大的技术栈,涉及多语言(支持C#.F#.VB.NET ...

  3. php引入html文件(或php文件)的方法

    php引入html文件(或php文件)的方法 一.使用fopen()函数  此函数主要传入的是头两个参数(第一个是文件地址,第二个是打开方式),可以读取任何一个文本文件,然后用while将fopen函 ...

  4. hdu1247 字典树或者hash

    题意:      给你一些串,问你哪些串是由其他两个串连接成的. 思路:        我用了两种方法,一个是hash,hash的时候用map实现的,第二种方法是字典树,字典树我们枚举每个一字符串,查 ...

  5. python中让输出不换行

    Python2.x python2.x中输出默认是换行的,为了抑制换行,可以在打印最后加一个逗号 Python3.x 到了python3中,print 变成一个函数,这种语法便行不通了. 我们可以使用 ...

  6. sharding JDBC 不支持批量导入解决方法

    package com.ydmes.service.impl.log; import com.ydmes.domain.entity.log.BarTraceBackLog;import org.sp ...

  7. @shiro.hasPermission 使用

    在页面上加上@shiro.hasPermission 如下用.ftl为例子: 当加上shiro标签后,会与后台代码结合使用: 需要继承AuthorizingRealm  下的 protected Au ...

  8. 改善c++程序的150个建议(读后总结)-------0-9

    0. 不要让main 函数返回 void 入口函数main()返回类型应该为 int, 即程序结束时return 0 表示程序正常返回,函数结束时 return -1 值表示程序异常返回, 如果不显式 ...

  9. C++ primer plus读书笔记——第2章 开始学习C++

    第2章 开始学习C++ 1. endl确保程序继续运行前刷新输出(将其立即显示在屏幕上),而使用"\n"不提供这样的保证,这意味着在有些系统中,有时可能在您输入信息后才会出现提示. ...

  10. SSM框架整合(Spring+SpringMVC+Mybatis)

    第一步:创建maven项目并完善项目结构  第二步:相关配置 pom.xml 引入相关jar包 1 <properties> 2 <project.build.sourceEncod ...