[CF86D]Powerful array
来源:互联网 发布:北京金山软件大厦 编辑:程序博客网 时间:2024/06/06 10:22
86D:Powerful array
题意简述
给出一个
设
给出
数据范围
思路
莫队搞一搞..
时间复杂度
代码
#include <cstdio>#include <cmath>#include <algorithm>using namespace std;int n,q,lim;int seq[200010],cnt[1000010];long long tot;long long ans[200010];struct ask{ int l,r,id; bool operator < (const ask &n1) const { return l/lim==n1.l/lim ? r<n1.r : l/lim<n1.l/lim; }}a[200010];int main(){ scanf("%d%d",&n,&q); lim=int(sqrt(n)); for (int i=1;i<=n;i++) scanf("%d",&seq[i]); for (int i=1;i<=q;i++) { scanf("%d%d",&a[i].l,&a[i].r); a[i].id=i; } sort(a+1,a+q+1); int l=a[1].l,r=a[1].l; cnt[seq[a[1].l]]++; tot=seq[a[1].l]; for (int i=1;i<=q;i++) { while (l<a[i].l) { cnt[seq[l]]--; tot-=seq[l]*(cnt[seq[l]]*2+1); l++; } while (l>a[i].l) { l--; cnt[seq[l]]++; tot+=seq[l]*(cnt[seq[l]]*2-1); } while (r<a[i].r) { r++; cnt[seq[r]]++; tot+=seq[r]*(cnt[seq[r]]*2-1); } while (r>a[i].r) { cnt[seq[r]]--; tot-=seq[r]*(cnt[seq[r]]*2+1); r--; } ans[a[i].id]=tot; } for (int i=1;i<=q;i++) printf("%I64d\n",ans[i]); return 0;}
0 0
- [CF86D]Powerful array
- 【CF86D】Powerful array
- 86D - Powerful array
- CF 86D Powerful array
- Codeforces 86D. Powerful array
- Codeforces 86D:Powerful array
- codeforces 86 D Powerful array
- 【CF 86D】Powerful array
- [Codeforces86D]Powerful array(莫队)
- cf86D 分块
- Codeforces 86D Powerful array 分块
- codefroce D. Powerful array[初识块状数组]
- codeforces 86D. Powerful array(分块)
- codeforces 86D D. Powerful array
- codeforces 86 D. Powerful array (莫队)
- CF 86D Powerful array(莫队)
- Codeforces 86D Powerful Array 莫队
- CF 86D Powerful array 【分块算法,n*sqrt(n)】
- OTL之Oracle开发总结
- 捕获本地网络包Rawcap+Wireshark
- DropBoxManager
- QT4.8.5+qt-vs-addin-1.1.11+VS2010安装配置和QT工程的新建和加载
- UEFI PROTOCOL LINK LIST
- [CF86D]Powerful array
- ActiveMQ的集群与高可用
- 带有图标和删除符号的可编辑输入框,用户可以自定义传入的显示图标
- 【蓝鸥科技】声明
- Activity class {package/class} does not exist 解决方法
- python3练习题--九九乘法表
- 定位多线程内存越界问题实践总结
- Android WebView的Js对象注入漏洞解决方案(JSBridge存在的意义)
- 我的caffe学习之路<第一天>