Codeforces - 220B Little Elephant and Array(莫队模板题)
题意:
m次查询。每次查询范围[L,R]中出现次数等于该数字的数字个数。
题解:
由于分块,在每次询问中,同一块时l至多移动根号n,从一块到另一块也是最多2倍根号n。对于r,每个块中因为同一块是按y排序,所以最多移动根号n;一共根号n个块。注意l和r要分开考虑。
要注意的是这道题需要离散一下数据。
- #include <iostream>
- #include <cstdio>
- #include <cmath>
- #include <algorithm>
- #include <cstring>
- using namespace std;
- const int maxn = 1e5+;
- int n, m;
- int l, r;
- int a[maxn], b[maxn], d[maxn];
- int blk;
- int blg[maxn];
- int ans;
- int sum[maxn];
- int out[maxn];
- struct node {
- int x, y, id;
- }c[maxn];
- bool cmp(node u, node v) {
- return (blg[u.x]==blg[v.x])?u.y<v.y:u.x<v.x;
- }
- void update(int x, int t) {
- sum[d[x]] += t;
- if(sum[d[x]] == a[x])
- ans++;
- else if(sum[d[x]] == a[x]+t)
- ans--;
- }
- int main() {
- while(~scanf("%d%d", &n, &m)) {
- for(int i = ; i <= n; i++) {
- scanf("%d", &a[i]);
- b[i] = a[i];
- }
- sort(b+, b+n+);
- int num = unique(b+, b+n+)-b;
- for(int i = ; i <= n; i++) d[i] = lower_bound(b+, b+num+, a[i])-b;
- blk = sqrt(n);
- for(int i = ; i <= n; i++) blg[i] = (i-)/blk+;
- for(int i = ; i <= m; i++) {
- scanf("%d%d", &c[i].x, &c[i].y);
- c[i].id = i;
- }
- sort(c+, c+m+, cmp);
- l = ; r = ;
- ans = ;
- memset(sum, , sizeof(sum));
- for(int i = ; i <= m; i++) {
- while(l < c[i].x) update(l++, -);
- while(l > c[i].x) update(--l, );
- while(r < c[i].y) update(++r, );
- while(r > c[i].y) update(r--, -);
- out[c[i].id] = ans;
- }
- for(int i = ; i <= m; i++) printf("%d\n", out[i]);
- }
- return ;
- }
Codeforces - 220B Little Elephant and Array(莫队模板题)的更多相关文章
- codeforces 220B . Little Elephant and Array 莫队+离散化
传送门:https://codeforces.com/problemset/problem/220/B 题意: 给你n个数,m次询问,每次询问问你在区间l,r内有多少个数满足其值为其出现的次数 题解: ...
- CodeForces - 220B Little Elephant and Array (莫队+离散化 / 离线树状数组)
题意:N个数,M个查询,求[Li,Ri]区间内出现次数等于其数值大小的数的个数. 分析:用莫队处理离线问题是一种解决方案.但ai的范围可达到1e9,所以需要离散化预处理.每次区间向外扩的更新的过程中, ...
- CODEFORCES 340 XOR and Favorite Number 莫队模板题
原来我直接学的是假的莫队 原题: Bob has a favorite number k and ai of length n. Now he asks you to answer m queries ...
- 【洛谷2709】小B的询问(莫队模板题)
点此看题面 大致题意: 有一个长度为\(N\)的序列,每个数字在\(1\sim K\)之间,有\(M\)个询问,每个询问给你一个区间,让你求出\(\sum_{i=1}^K c(i)^2\),其中\(c ...
- [SDOI2009][bzoj1878] HH的项链 [莫队模板题]
题面: 传送门 思路: 就是一道莫队的模板题目...... 开一个1000000的数组记录每个数出现的次数,然后每次从1到0或者从0到1更新答案 莫队讲解看这里:莫队 Code: #include&l ...
- Codeforces 220B - Little Elephant and Array 离线树状数组
This problem can be solve in simpler O(NsqrtN) solution, but I will describe O(NlogN) one. We will s ...
- Codeforces 86D - Powerful array(莫队算法)
题目链接:http://codeforces.com/problemset/problem/86/D 题目大意:给定一个数组,每次询问一个区间[l,r],设cnt[i]为数字i在该区间内的出现次数,求 ...
- P2709 小B的询问——普通莫队&&模板
普通莫队概念 莫队:莫涛队长发明的算法,尊称莫队.其实就是优化的暴力. 普通莫队只兹磁询问不支持修改,是离线的. 莫队的基本思想:就是假定我得到了一个询问区间[l,r]的答案,那么我可以在极短(通常是 ...
- D. Powerful array 莫队算法或者说块状数组 其实都是有点优化的暴力
莫队算法就是优化的暴力算法.莫队算法是要把询问先按左端点属于的块排序,再按右端点排序.只是预先知道了所有的询问.可以合理的组织计算每个询问的顺序以此来降低复杂度. D. Powerful array ...
随机推荐
- 读取hdfs目录,并在web页面上展示文件里的内容
最终效果图 目录树实体类: /** * @Author: DaleyZou * @Description: hdfs 目录结构的实体类,用于展示目录树的支撑操作 * @Date: Created in ...
- C语言进阶——注释符号12
注释可能大认为非常简单,但是注释其实在C语言中很关键,来看下面一段对话. ---学生: 老师,我觉得注释没有必要深究,因为很简单,对程序功能也没有影响. ---老师: 注释是C语言最重要的工具,我们先 ...
- scala高级性质-隐式转换 -02
今天我们来介绍scala的高级特性,上次已经介绍过他的一个特性:高阶函数,这次是隐式转换 1.隐式转换的例子 read的例子 解析:发现这个file没有read的方法,然后就开始在开始在这个上下文里面 ...
- SpringMVC---四大注解
SpringMVC四大注解 Component 通用标注,在不清楚使用哪个注解的时候,可以使用Component通用注解 Controller 标注web请求控制器 Service 标注Service ...
- SpringMVC---简单登录例子
所需jar包aopalliance-1.0.jar.commons-logging-1.2.jar.spring-aop-5.0.0.RELEASE.jar.spring-beans-5.0.0.RE ...
- Android stadio 插件推荐--ok gradle
今天发现了一个好玩的插件,对于想要知道依赖怎么写的同学很有帮助. 写这篇文章的意义在于,以后我忘了的话,可以自己在博客中找到. 上地址: https://github.com/scana/ok-gra ...
- echart搭配时间轴进行展示 (本例展示的是多时间 多地区 多指标条件 )
1:照常先来几张图 看效果 2:首先 看官方文档 我把echart官方的例子给扒下来并整理了得出如下效果 上 案例图和代码 效果图 : 代码: <style type="text/c ...
- dubbo-admin管理控制台的安装和使用
因为zookeeper只是一个黑框,我们无法看到是否存在了什么提供者或消费者,这时就要借助Dubbo-Admin管理平台来实时的查看,也可以通过这个平台来管理提者和消费者. dubbo下载及配置 du ...
- 底部菜单栏之Fragment的详细介绍和使用方法
详情请看:http://blog.csdn.net/loongggdroid/article/details/9366413
- 对setTimeout函数的理解
之前去面试一家公司时,面试官出了一道关于js的setTimeout函数的题目: /* *面试官给的原题目如下: *执行mytest()后,控制台输出内容是_____ *function mytest( ...