题目链接:Problem - 4638

做了两天莫队和分块,留个模板吧。

当插入r的时候,设arr[r]代表r的位置的数字,判断vis[arr[r-1]]和vis[arr[r+1]]是否访问过,如果两个都访问过,那么块的个数-1,如果有一个访问过,块的个数不变,如果都为0,块的个数+1.

 #include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
const int maxn = 1e5+;
int vis[maxn];
struct node
{
int l,r;
int block;
int id;
};
node q[maxn];
int arr[maxn];
bool cmp(node A,node B)
{
if(A.block==B.block) return A.r<B.r;
return A.l<B.l;
}
int res[maxn];
int query(int l,int r)
{
if(vis[l]==&&vis[r]==) return -;
if((vis[l]==&&vis[r]==)||(vis[l]==&&vis[r]==)) return ;
if(vis[l]==&&vis[r]==) return ;
}
int main()
{
int T;cin>>T;
while(T--)
{
int n,m;
scanf("%d %d",&n,&m);
int block = sqrt(n);
for(int i=;i<=n;i++) scanf("%d",&arr[i]);
memset(vis,,sizeof(vis));
for(int i=;i<=m;i++)
{
scanf("%d %d",&q[i].l,&q[i].r);
q[i].block = q[i].l/block;
q[i].id = i;
}
sort(q+,q+m+,cmp);
int l=,r=;
int ans = ;
for(int i=;i<=m;i++)
{
while(r < q[i].r)
{
r++;
vis[arr[r]] = ;
ans += query(arr[r]-,arr[r]+);
}
while(r > q[i].r)
{
ans -= query(arr[r]-,arr[r]+);
vis[arr[r]] = ;
r--;
}
while(l < q[i].l)
{
ans -= query(arr[l]-,arr[l]+);
vis[arr[l]] = ;
l++;
}
while(l > q[i].l)
{
l--;
vis[arr[l]] = ;
ans += query(arr[l]-,arr[l]+);
}
res[q[i].id] = ans;
}
for(int i=;i<=m;i++)
{
printf("%d\n",res[i]);
}
}
return ;
}

HDU 4638 (莫队)的更多相关文章

  1. HDU 4638 莫队算法

    Group Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  2. Hdu 5213-Lucky 莫队,容斥原理,分块

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=5213 Lucky Time Limit: 6000/3000 MS (Java/Others)    Me ...

  3. Harvest of Apples (HDU多校第四场 B) (HDU 6333 ) 莫队 + 组合数 + 逆元

    题意大致是有n个苹果,问你最多拿走m个苹果有多少种拿法.题目非常简单,就是求C(n,0)+...+C(n,m)的组合数的和,但是询问足足有1e5个,然后n,m都是1e5的范围,直接暴力的话肯定时间炸到 ...

  4. HDU 4358 莫队算法+dfs序+离散化

    Boring counting Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 98304/98304 K (Java/Others)T ...

  5. hdu 5145(莫队算法+逆元)

    NPY and girls Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tot ...

  6. HDU 6333 莫队+组合数

    Problem B. Harvest of Apples Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 262144/262144 K ...

  7. HDU 6534 莫队+ 树状数组

    题意及思路:https://blog.csdn.net/tianyizhicheng/article/details/90369491 代码: #include <bits/stdc++.h&g ...

  8. HDU 5145 NPY and girls (莫队分块离线)

    题目地址:HDU 5145 莫队真的好奇妙.. 这种复杂度竟然仅仅有n*sqrt(n)... 裸的莫队分块,先离线.然后按左端点分块,按块数作为第一关键字排序.然后按r值作为第二关键字进行排序. 都是 ...

  9. hdu 4638 Group 莫队算法

    题目链接 很裸的莫队, 就不多说了... #include<bits/stdc++.h> using namespace std; #define pb(x) push_back(x) # ...

随机推荐

  1. bower 教程

    1.运行 - cmd 2.npm install -g  bower 3.文件夹右击git bash here

  2. utf8 文件 错误保存为gbk 中文乱码 解决方法

    用zend studio  将utf-8 格式的文件 保存为 gbk 了,之后无论怎么装换 中文都是乱码 用 beyond compare(文件比较工具 对编码支持的比较强大) 打开,改下编码,中文就 ...

  3. Ansible10:Playbook的角色与包含【转】

    当单个playbook文件越来越大的时候,我们就需要重新来组织Playbooks了.我们可以将一个大的playbook拆成若干个小的playbook文件,然后通过include的方式,在主配置文件中将 ...

  4. json的引号之伤

    最近读他们的jquery解读的源码,由于版本不同,我可能看的是他们解读的1.7的,但是我本身运行的可能是1.9的,所以有些出处,但是中心思想不变,我有疑问的时候,直接debug,让例子自己走一遍,好处 ...

  5. Modal视图弹出方式

    Modal方式弹出页面: 1.Modal方式弹出页面在iOS中有很广泛的应用,比如UIImagePickerController等,Modal方式主要有以下几个作用: 检查登陆信息,Modal出登陆页 ...

  6. 【servlet】客户端是否可以访问到WEB-INF下的jsp文件

    一般情况下(不考虑出现安全问题被入侵,那样啥都能访问到),WEB-INF下的jsp文件单凭浏览器端请求时访问不到的. 想访问的话需要通过服务端servlet的转发. 下面通过转发和重定向的尝试来观察访 ...

  7. 修改apache配置文件去除thinkphp url中的index.php

    例如你的原路径是 http://localhost/test/index.php/index/add那么现在的地址是 http://localhost/test/index/add如何去掉index. ...

  8. HDU - 1865 1string(大数)

    题目链接:http://acm.hust.edu.cn/vjudge/contest/121397#problem/F http://acm.hdu.edu.cn/showproblem.php?pi ...

  9. 转:Selenium2.0介绍——WebDriver两种驱动浏览器的方式.

    如果之前熟悉Selenium RC,理解了Selenium RC是如何工作的,那么,当第一次接触Selenium WebDriver的时候,看到WebDriver居然可以不需要指定远端服务器的IP地址 ...

  10. C#无边框窗体移动 将事件绑定到想实现的控件上

    [DllImport("user32.dll")] public static extern bool ReleaseCapture(); [DllImport("use ...