【二分+前缀和+后缀和】codeforces 2026 D. Sums of Segments
1.前后缀分解2.【前缀和+开区间二分】codeforces 1187 B. Letters Shop3.【字符串哈希+二分】AcWing 3508. 最长公共子串
4.【二分+前缀和+后缀和】codeforces 2026 D. Sums of Segments
5.【滑动窗口】codeforces 1290 A. Mind Control6.【三分】AcWing 3666. 士兵排阵7.【带权前缀和】codeforces 2044 H. Hard Demon Problem8.【区间合并+贡献法】codeforces 1789 C. Serval and Toxel's Arrays9.【离线+单调栈】AtCoder ABC379 F. Buildings 2题目
https://codeforces.com/problemset/problem/2026/D
题意
第一行输入一个正整数
对于数组
题解
对于数组
第一组
第二组
...
第
组
易知从第一组到第
观察可以发现:第二组可以由第一组每个元素都删去一个
假设想计算数组
不妨假设
删除的元素可以视为
参考代码
#include<bits/stdc++.h> #define IOS ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr); using namespace std; using ll = long long; constexpr int N = 3e5 + 7; int n, q; ll l, r; ll a[N]; ll b[N];//第 i 组元素的总和 ll c[N];//维护第 1~i 组的总元素个数,分别是 n, n + (n - 1), n + (n - 1) + (n - 2), ... ll apre[N];//a的前缀和 ll apst[N];//a的后缀和 ll bpre[N];//b的前缀和 ll calc(ll x) {//计算出从 b1~bx 的和 int loc = lower_bound(c + 1, c + 1 + n, x) - c;//计算出第 x 项所在组 loc ll res = bpre[loc]; if (c[loc] > x) { res = bpre[loc - 1]; int deleteNum = c[loc] - x;//需要删掉的数的数量 ll lastNum = apst[loc] - apst[n - deleteNum + 1];//删掉 deleteNum 个数后剩余最大元素 res += b[loc] - b[n - deleteNum + 1] - lastNum * deleteNum;//第 loc 组的和减去 倒数第 deleteNum 组的和并减去 deletNum 个剩余最大元素 } return res; } int main() { cin >> n; for (int i = 1; i <= n; ++ i) { cin >> a[i]; apre[i] += apre[i - 1] + a[i];//求数组 a 的前缀和 } for (int i = n; i >= 1; -- i) { apst[i] = apst[i + 1] + a[i];//求数组 b 的前缀和 b[i] = apre[i] + b[i + 1];//数组 a 的前缀和的前缀和,也就是第 i 组的和 } c[1] = n;//第一组的元素个数 for (int i = 2; i <= n; ++ i) { c[i] = c[i - 1] + (n - i + 1);//第一组到第 i 组的总元素个数 b[i] = b[i - 1] - a[i - 1] * (n - i + 2);//第 i 组的元素之和 } for (int i = 1; i <= n; ++ i) bpre[i] = b[i] + bpre[i - 1];//数组 b 前缀和的前缀和,也就是第一组到第 i 组的总元素之和 cin >> q; while (q --) { cin >> l >> r; cout << calc(r) - calc(l - 1) << '\n'; } return 0; }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 本地部署 DeepSeek:小白也能轻松搞定!
· 如何给本地部署的DeepSeek投喂数据,让他更懂你
· 从 Windows Forms 到微服务的经验教训
· 李飞飞的50美金比肩DeepSeek把CEO忽悠瘸了,倒霉的却是程序员
· 超详细,DeepSeek 接入PyCharm实现AI编程!(支持本地部署DeepSeek及官方Dee