[ARC099F] Eating Symbols Hard
题意翻译
你有一个初始为 $0$ 的数组和一个初始在 $0$ 的指针,范围可以看做无限。
给出一个长度为 $N$ 的操作串,由 `<`,`>`,`+`,`-` 组成,其中每个字符意义如下。
- `<` 将指针左移一位。
- `>` 将指针右移一位。
- `+` 将指针对应位置 $+1$。
- `- ` 将指针对应位置 $-1$。
求有多少个子串,使得执行完子串的操作后,数组和执行完整个串是一样的。
$1 \leq N \leq 250000$。
题目描述
[problemUrl]: https://atcoder.jp/contests/arc099/tasks/arc099_d
高橋君は,いつも頭の中に,長さ $ 2\ \times\ 10^9\ +\ 1 $ の整数列 $ A\ =\ (A_{-10^9},\ A_{-10^9\ +\ 1},\ ...,\ A_{10^9\ -\ 1},\ A_{10^9}) $ と,整数 $ P $ を思い浮かべています.
はじめ,高橋君が思い浮かべている整数列 $ A $ のすべての要素は $ 0 $ です. また,整数 $ P $ の値は $ 0 $ です.
高橋君は,`+`, `-`, `>`, `<` の記号を食べると,それぞれ次のように思い浮かべている整数列 $ A $,整数 $ P $ が変化します:
- `+` を食べた場合,$ A_P $ の値が $ 1 $ 大きくなる.
- `-` を食べた場合,$ A_P $ の値が $ 1 $ 小さくなる.
- `>` を食べた場合,$ P $ の値が $ 1 $ 大きくなる.
- `<` を食べた場合,$ P $ の値が $ 1 $ 小さくなる.
高橋君は,長さ $ N $ の文字列 $ S $ を持っています.$ S $ の各文字は `+`, `-`, `>`, `<` の記号のいずれかです. 高橋君は,$ 1\ \leq\ i\ \leq\ j\ \leq\ N $ なる整数の組 $ (i,\ j) $ を選んで,$ S $ の $ i,\ i+1,\ ...,\ j $ 文字目の記号をこの順に食べました. 高橋君が記号を食べ終わった後,高橋君が思い浮かべている整数列 $ A $ は,高橋君が $ S $ のすべての記号を $ 1 $ 文字目から順に食べた場合と等しくなったといいます. このような $ (i,\ j) $ として考えられるものは何通りあるか求めてください.
输入输出格式
输入格式
入力は以下の形式で標準入力から与えられる.
> $ N $ $ S $
输出格式
答えを出力せよ.
输入输出样例
输入样例 #1
5
+>+<-
输出样例 #1
3
输入样例 #2
5
+>+-<
输出样例 #2
5
输入样例 #3
48
-+><<><><><>>>+-<<>->>><<><<-+<>><+<<>+><-+->><<
输出样例 #3
475
说明
### 制約
- $ 1\ \leq\ N\ \leq\ 250000 $
- $ |S|\ =\ N $
- $ S $ の各文字は `+`, `-`, `>`, `<` のいずれか
### Sample Explanation 1
高橋君が $ S $ のすべての記号を食べた場合,$ A_1\ =\ 1 $ で,$ A $ の他の要素はすべて $ 0 $ になります. $ A $ がこれと等しくなるような $ (i,\ j) $ は次の通りです: - $ (1,\ 5) $ - $ (2,\ 3) $ - $ (2,\ 4) $
### Sample Explanation 2
高橋君が $ S $ のすべての記号を食べた場合と $ P $ が異なっていてもかまわないことに注意してください.