1 条题解
-
0赵青海 (huhe) LV 7 SU @ 2022-8-26 21:02:58
/***************************************** Note: ******************************************/ #include <queue> #include <math.h> #include <stack> #include <stdio.h> #include <iostream> #include <vector> #include <iomanip> #include <string.h> #include <unordered_map> #include <algorithm> using namespace std; const int N = 1e6 + 10; const int INF = 0x3f3f3f3f; using namespace std; typedef long long ll; const int maxn = 3 * 1e5 + 5; char str[maxn]; unordered_map<ll, int> um; int main() { int n; scanf("%d%s", &n, str + 1); ll s = 0, ans = 0, a = 0; um[0] = 1; for(int i = 1; i <= n; i++) { if(islower(str[i])) { a = str[i] - 'a'; } else { a = str[i] - 'A' + 26; } s ^= 1LL << a; for(int j = 0; j < 52; j++) { if(um.count(s ^ (1LL << j))) { ans += um[s ^ (1LL << j)]; } } if(um.count(s)) { ans += um[s]; } um[s]++; } printf("%lld\n", ans); return 0; }
- 1
信息
- ID
- 2803
- 时间
- 5000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 55
- 已通过
- 1
- 上传者