CF86D Powerful array 题解
2022/4/14 23:16:18
本文主要是介绍CF86D Powerful array 题解,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
看到长这样的题目,显然是莫队板子题。
但是不知道为什么很多人写的都是 \(2 \times cnt_x + 1\) 之类的?好像直接先减再加不就好了?公式都不用推。
注意指针顺序以及 long long
。
目前 CF 的机子上已经不需要用 %l64d
输出 long long
,直接 %lld
输出即可。
代码:
#include <bits/stdc++.h> using namespace std; typedef long long LL; const int MAXA = 1e6 + 10, MAXN = 2e5 + 10; int n, m, cnt[MAXA], a[MAXN], ys[MAXN], block; LL total, ans[MAXN]; struct node { int l, r, id; }q[MAXN]; int read() { int sum = 0, fh = 1; char ch = getchar(); while (ch < '0' || ch > '9') {if (ch == '-') fh = -1; ch = getchar();} while (ch >= '0' && ch <= '9') {sum = (sum << 3) + (sum << 1) + (ch ^ 48); ch = getchar();} return sum * fh; } bool cmp(const node &fir, const node &sec) { if (ys[fir.l] ^ ys[sec.l]) return ys[fir.l] < ys[sec.l]; if (ys[fir.l] & 1) return fir.r < sec.r; return fir.r > sec.r; } void add(int x) { total -= (LL)cnt[a[x]] * cnt[a[x]] * a[x]; cnt[a[x]]++; total += (LL)cnt[a[x]] * cnt[a[x]] * a[x]; } void del(int x) { total -= (LL)cnt[a[x]] * cnt[a[x]] * a[x]; cnt[a[x]]--; total += (LL)cnt[a[x]] * cnt[a[x]] * a[x]; } int main() { n = read(), m = read(); block = sqrt(n); for (int i = 1; i <= n; ++i) a[i] = read(); for (int i = 1; i <= n; ++i) ys[i] = (i - 1) / block + 1; for (int i = 1; i <= m; ++i) {q[i].l = read(), q[i].r = read(), q[i].id = i;} sort(q + 1, q + m + 1, cmp); int l = 1, r = 0; for (int i = 1; i <= m; ++i)//l--,r++,r--,l++ { while (l > q[i].l) add(--l); while (r < q[i].r) add(++r); while (r > q[i].r) del(r--); while (l < q[i].l) del(l++); ans[q[i].id] = total; } for (int i = 1; i <= m; ++i) printf("%lld\n", ans[i]); return 0; }
这篇关于CF86D Powerful array 题解的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-26小白家庭 nas 搭建方案-icode9专业技术文章分享
- 2024-06-23AI大模型企业应用实战(14)-langchain的Embedding
- 2024-06-23AI大模型企业应用实战(15)-langchain核心组件
- 2024-06-23AI大模型企业应用实战(16)-langchain核心组件
- 2024-06-23AI 大模型企业应用实战(06)-初识LangChain
- 2024-06-19EntBot.ai: AI Website Chatbot for Product Guides and Development Doc
- 2024-06-17zero-shot-learning-definition-examples-comparison
- 2024-06-06Package Easy(基于 NSIS 的打包exe安装包工具)使用方法-icode9专业技术文章分享
- 2024-06-06基于 casdoor 的 ELK 开源登录认证解决方案: elk-auth-casdoor-icode9专业技术文章分享
- 2024-05-29Elasticsearch慢查询日志配置