CF1042D Petya and Array 题解
比较典的一个题。
题意:给定
思路
令
考虑枚举
发现是个二维偏序,用权值树状数组维护之,复杂度
代码
#include <cstdio>
#include <cctype>
#include <algorithm>
#define F(x) v[m++] = x
#define H(x) lower_bound(v, v + m, x) - v + 1
using namespace std;
inline long long R()
{
long long r = 0;bool b = 0;char c = getchar();
while(!isdigit(c)) b = c == '-', c = getchar();
while(isdigit(c)) r = r * 10 + c - '0', c = getchar();
return b ? -r : r;
}
int n, m = 1, c[400050];long long t, q, a[200050], v[400050];
void C(int x) {for(;x <= m;x += x & -x) ++c[x];}
int Q(int x)
{
int q = 0, y = m;for(--x;y > x;y &= y - 1) q += c[y];
for(;x > y;x &= x - 1) q -= c[x];return q;
}
int main()
{
n = R();t = R();for(int i = 1;i <= n;++i)
F(a[i] = a[i - 1] + R()), F(a[i] - t + 1);
sort(v, v + m);m = unique(v, v + m) - v;C(H(0));
for(int i = 1;i <= n;++i) q += Q(H(a[i] - t + 1)), C(H(a[i]));
return printf("%lld", q), 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具