[BZOJ3781]:小B的询问(离线莫队算法)
题目传送门
题目描述
小B有一个序列,包含$N$个$1~K$之间的整数。他一共有$M$个询问,每个询问给定一个区间$[L...R]$,求$\sum \limits_{i=1}^{K}c(i)^2$的值,其中$c(i)$表示数字$i$在$[L...R]$中的重复次数。小$B$请你帮助他回答询问。
输入格式
第一行,三个整数N,M,K。
第二行,N个整数,表示小B的序列。
接下来的M行,每行两个整数L,R。
输出格式
M行,每行一个整数,其中第i行的整数表示第i个询问的答案。
样例
样例输入
6 4 3
1 3 2 1 1 3
1 4
2 6
3 5
5 6
样例输出
6
9
5
2
数据范围与提示
对于全部的数据,$1\leqslant N,M,K\leqslant 50,000$。
题解
惊喜的发现是要求离线,而且数据范围为$50,000$,较为宽松,所以考虑莫队。
先将序列分块,然后将询问排序,不断伸缩左右端点,小心不要弄错就好了。
真不知道有什么好说的了……
代码时刻
- #include<bits/stdc++.h>
- using namespace std;
- struct rec
- {
- int id;
- int l;
- int r;
- int pos;
- }q[50001];
- int a[50001];
- int cnt[50001];
- long long ans;
- long long sum[50001];
- bool cmp(rec a,rec b){return a.pos==b.pos?a.r<b.r:a.pos<b.pos;}//排序
- int main()
- {
- int n,m,k;
- scanf("%d%d%d",&n,&m,&k);
- int t=sqrt(n);//分块
- for(int i=1;i<=n;i++)
- scanf("%d",&a[i]);
- for(int i=1;i<=m;i++)
- {
- scanf("%d%d",&q[i].l,&q[i].r);
- q[i].id=i;
- q[i].pos=(q[i].l-1)/t+1;
- }
- sort(q+1,q+m+1,cmp);
- int l=1,r=0;
- for(int i=1;i<=m;i++)//四种情况伸缩左右端点
- {
- while(l<q[i].l)
- {
- ans-=2*cnt[a[l]]-1;//注意答案的加减
- cnt[a[l]]--;
- l++;
- }
- while(l>q[i].l)
- {
- l--;
- ans+=2*cnt[a[l]]+1;
- cnt[a[l]]++;
- }
- while(r<q[i].r)
- {
- r++;
- ans+=2*cnt[a[r]]+1;
- cnt[a[r]]++;
- }
- while(r>q[i].r)
- {
- ans-=2*cnt[a[r]]-1;
- cnt[a[r]]--;
- r--;
- }
- sum[q[i].id]=ans;
- }
- for(int i=1;i<=m;i++)
- printf("%lld\n",sum[i]);
- return 0;
- }
rp++
[BZOJ3781]:小B的询问(离线莫队算法)的更多相关文章
- bzoj 3781 小B的询问(莫队算法)
[题意] 若干个询问sigma{ cnt[i]^2 } cnt[i]表示i在[l,r]内的出现次数. [思路] 莫队算法,裸题. 一个cnt数组即可维护插入与删除. [代码] #include< ...
- [bzoj3781]小B的询问_莫队
小B的询问 bzoj-3781 题目大意:给定一个n个数的序列,m次询问.每次询问一段区间内数的种类的平方和. 注释:$1\le n\,m\le 5\cdot 10^4$. 想法:莫队练习题. 我们考 ...
- 【Luogu】P2709小B的询问(莫队算法)
题目链接 md,1A率等于0. 烦死. 终于搞到一道莫队了qwq. 先对区间分块再按照块编号为第一关键字,右端点为第二关键字排序,然后每次端点移动1乱搞. 然后……就wa了. 然后有很多细节需要注意q ...
- 【BZOJ】3781: 小B的询问(莫队算法)
http://www.lydsy.com/JudgeOnline/problem.php?id=3781 还能不能再裸点.. #include <cstdio> #include < ...
- BZOJ_3781_小B的询问_莫队
BZOJ_3781_小B的询问_莫队 Description 小B有一个序列,包含N个1~K之间的整数.他一共有M个询问,每个询问给定一个区间[L..R],求Sigma(c(i)^2)的值,其中i的值 ...
- 小B的询问(题解)(莫队)
小B的询问(题解)(莫队) Junlier良心莫队 题目 luoguP2709 小B的询问 code #include<bits/stdc++.h> #define lst long lo ...
- D. Powerful array 离线+莫队算法 给定n个数,m次查询;每次查询[l,r]的权值; 权值计算方法:区间某个数x的个数cnt,那么贡献为cnt*cnt*x; 所有贡献和即为该区间的值;
D. Powerful array time limit per test seconds memory limit per test megabytes input standard input o ...
- 2018.07.01 洛谷小B的询问(莫队)
P2709 小B的询问 题目描述 小B有一个序列,包含N个1~K之间的整数.他一共有M个询问,每个询问给定一个区间[L..R],求Sigma(c(i)^2)的值,其中i的值从1到K,其中c(i)表示数 ...
- 【洛谷2709】小B的询问(莫队模板题)
点此看题面 大致题意: 有一个长度为\(N\)的序列,每个数字在\(1\sim K\)之间,有\(M\)个询问,每个询问给你一个区间,让你求出\(\sum_{i=1}^K c(i)^2\),其中\(c ...
- BZOJ 2038: [2009国家集训队]小Z的袜子(hose) [莫队算法]【学习笔记】
2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec Memory Limit: 259 MBSubmit: 7687 Solved: 3516[Subm ...
随机推荐
- SwipeRefreshLayout和RecyclerView类
1 SwipeRefreshLayout和RecyclerView之间的关系 内容栏上下滚动是RecyclerView控制的,只有当内容栏滑动到最顶上时,再也拉不动了的时候,这个时候将动作交给Swip ...
- urllib库认证,代理,cookie
认证,代理,cookie 1from urllib.request import HTTPBasicAuthHandler, HTTPPasswordMgrWithDefaultRealm, buil ...
- 首次全备及事务备份对数据库的影响,2014 SpexSql log评估版探索
参考:https://www.cnblogs.com/gered/p/9882367.html 关键词:解析事务日志 新建数据库test3,然后查看日志文件,382行记录 SELECT min([Be ...
- Vue Element使用第三库icon图标
一:引入单设图标 1.打开 阿里icon,注册 >登录>图标管理>我的项目 2.新建项目 返回阿里icon首页,点进去你想要的icon库,因为没有批量导入购物车,所以一般情况下需要一 ...
- [BZOJ 3509] [CodeChef] COUNTARI (FFT+分块)
[BZOJ 3509] [CodeChef] COUNTARI (FFT+分块) 题面 给出一个长度为n的数组,问有多少三元组\((i,j,k)\)满足\(i<j<k,a_j-a_i=a_ ...
- django中配置MySql
1.配置字段 在setting文件中配置数据库字段:数据库需要提前手动创建好:语句(create database testdb charset "utf8";) DATABASE ...
- vue 防抖和节流
函数防抖(debounce):当持续触发事件时,一定时间段内没有再触发事件,事件处理函数才会执行一次,如果设定的时间到来之前,又一次触发了事件,就重新开始延时. 函数节流(throttle):当持续触 ...
- 解决tcp粘包
粘包现象:只有tcp协议才会产生粘包,udp协议不会产生粘包 1.tcp协议下,发送端会采用一个优化算法(Nagle算法),把间隔时间短,数据比较小的包合并到一起,再一起发送过去,造成粘包 2.发送端 ...
- 大数据数据库HBase(一)——架构原理
一.HBase简介 1.1.Hadoop生态系统 1.2.非关系型数据库知识面扩展 Cassandra hbase mongodb Couchdb,文件存储数据库 Neo4j非关系型图数据库 1.3 ...
- 10年前文章_respin 下制作iso 文件的脚本说明
1.prepare_spin.sh 用于在 /var/rpm 下生成 lhs-local 需要的repositery 2.respin.sh 使用revisor 生成 iso 3. post_spi ...