cf220B莫队
用莫队比直接做快了很多。。
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
using namespace std;
#include<algorithm>
#define maxn 100005
int a[maxn],b[maxn],c[maxn],num[maxn];//原始数组,排序后的数组,离散后的数组,离散后的数组中元素出现的次数
int s;//块长度
struct Query{
int l,r,id;
bool operator<(const Query &a)const{
if(l/s==a.l/s) return r<a.r;
return l/s<a.l/s;
}
}q[maxn];
int ans[maxn];
int main(){
int n,m;
while(scanf("%d%d",&n,&m)==){
s=(int)sqrt(1.0*n);
for(int i=;i<=n;i++)
scanf("%d",&a[i]),b[i]=a[i];
sort(b+,b+n+);
for(int i=;i<=n;i++)
c[i]=lower_bound(b+,b++n,a[i])-b;
for(int i=;i<=m;i++)
scanf("%d%d",&q[i].l,&q[i].r),q[i].id=i;
sort(q+,q+m+);
//处理每个询问
int l=,r=,tmp=;
for(int i=;i<=m;i++){
while(r<q[i].r){//右边界拓展
r++;
if(num[c[r]]==a[r]-) tmp++;
else if(num[c[r]]==a[r]) tmp--;
num[c[r]]++;
}
while(r>q[i].r){//右边界往回缩
if(num[c[r]]==a[r]) tmp--;
else if(num[c[r]]==a[r]+) tmp++;
num[c[r]]--;
r--;
}
while(l<q[i].l){//左边界往回缩
if(num[c[l]]==a[l]) tmp--;
else if(num[c[l]]==a[l]+) tmp++;
num[c[l]]--;
l++;
}
while(l>q[i].l){//左边界拓展
l--;
if(num[c[l]]==a[l]-) tmp++;
else if(num[c[l]]==a[l]) tmp--;
num[c[l]]++;
}
ans[q[i].id]=tmp;
}
for(int i=;i<=m;i++)
printf("%d\n",ans[i]);
}
return ;
}
cf220B莫队的更多相关文章
- BZOJ 3289: Mato的文件管理[莫队算法 树状数组]
3289: Mato的文件管理 Time Limit: 40 Sec Memory Limit: 128 MBSubmit: 2399 Solved: 988[Submit][Status][Di ...
- NBUT 1457 莫队算法 离散化
Sona Time Limit:5000MS Memory Limit:65535KB 64bit IO Format: Submit Status Practice NBUT 145 ...
- 【填坑向】bzoj2038小Z的袜子 莫队
学莫队必做题,,,但是懒得写.今天来填个坑 莫队水题 莫队实际上就是按一个玄学顺序来离线计算询问,保证复杂度只会多一个n1/2,感觉是玄学(离线算法都很玄学) 易错点:要开long long(卡我半天 ...
- BZOJ 2038: [2009国家集训队]小Z的袜子(hose) [莫队算法]【学习笔记】
2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec Memory Limit: 259 MBSubmit: 7687 Solved: 3516[Subm ...
- NPY and girls-HDU5145莫队算法
Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem Description ...
- Codeforces617 E . XOR and Favorite Number(莫队算法)
XOR and Favorite Number time limit per test: 4 seconds memory limit per test: 256 megabytes input: s ...
- Bzoj 2038---[2009国家集训队]小Z的袜子(hose) 莫队算法
题目链接 http://www.lydsy.com/JudgeOnline/problem.php?id=2038 Description 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色 ...
- 【BZOJ 3735】苹果树 树上莫队(树分块+离线莫队+鬼畜的压行)
2016-05-09 UPD:学习了新的DFS序列分块,然后发现这个东西是战术核导弹?反正比下面的树分块不知道要快到哪里去了 #include<cmath> #include<cst ...
- 【BZOJ 2038】【2009 国家集训队】小Z的袜子(hose) 分块+莫队
$SDOI2016Day-1$临时抱佛脚学习一下莫队算法$233$ 我预感到自己省选要爆0hhh #include<cmath> #include<cstdio> #inclu ...
随机推荐
- java代码示例(3)
/** * 需求分析:根据输入的天数是否是周六或是周日, * 并且天气的温度大于28摄氏度,则外出游泳,否则钓鱼 * @author chenyanlong * 日期:2017/10/14 */ pa ...
- linux centos7安装python3
折腾 Python官网: https://www.python.org/ 查看相关评论,众人大呼python2与python3为两种语言,既然继承性不大,那我也就直接学python3了. 在系统选择, ...
- 在 golang 中使用 Json
序列化 序列化对象将使用 encoding/json 中的 Marshal 函数. 函数原型为:func Marshal(v interface{}) ([]byte, error) 以下是官网给出的 ...
- 微信现金红包 python
微信现金红包发送接口,好像没法限制一个用户一个活动只能领取一次红包,在调用红包接口上,自己做了限制 REDPACK_RECORD 建表sql -- Create table create table ...
- Bootstrap --对话框及提示框的处理和优化
源模态框使用:http://www.runoob.com/bootstrap/bootstrap-modal-plugin.html <!-- 按钮触发模态框 --> <button ...
- C++使用目录
VS2017的安装和配置 常用指令 C++ 数据类型 常量 运算符 数组 字符串 Ansi与Unicode 指针 模态与非模态对话框 变量的引用& new和delete动态分配和 ...
- luogu P2511 [HAOI2008]木棍分割
传送门 第一问是一道经典的二分,二分答案\(ans\),然后从前往后扫,判断要分成几段救星了 第二问设\(f_{i,j}\)表示前\(i\)个数分成\(j\)段,每段之和不超过第一问答案的方案,转移就 ...
- day2 查看文件目录命令:ls
查看当前文件夹下面多有的目录文件ls 查看当前目录下面所有的文件,包括隐藏的文件ls -a(或者两个一样ls -all) 显示除"."和".."外的所有文件ls ...
- day1 查看当前目录命令:pwd
用到查看当前目录的完整路径使用:pwd 物理路径和连接路径什么鬼?没明白暂时借鉴别人的记录下 显示当前目录的物理路径 pwd –P 1: [root@DB-Server init.d]# cd /et ...
- shiro授权及自定义realm授权(七)
1.授权流程