Codeforces Round 962 (Div. 3) E(思维 + 计数)
题面
给定一个长度为
的 串 ,问:对于每一对 ,有多少对 满足: 且 中字符 的个数和字符 的个数相同。
题解
实际上,我们只需要找出每一对
如果
我们可以把字符
可以考虑枚举每个位置作为
时间复杂度为
点击查看代码
#include <bits/stdc++.h>
using i64 = int64_t;
void solve() {
std::string s;
std::cin >> s;
const int N = s.size();
std::vector<int> pref(N + 1);
for (int i = 0; i < N; i++) {
pref[i + 1] = pref[i] + (s[i] == '0' ? -1 : 1);
}
std::map<int, i64> f;
f[0] = 1;
Z ans = 0;
for (int i = 1; i <= N; i++) {
// Z 是取模类的名字
ans += Z(N - i + 1) * f[pref[i]];
f[pref[i]] += i + 1;
}
std::cout << ans << "\n";
}
int main() {
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
int T;
std::cin >> T;
while (T--) {
solve();
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】