题目大意:给定一个长度为$n$的序列$a_i$,$m$次询问,每次询问$[l,r]$,求在区间内有多少个数出现了至少2次。

数据范围:$1\leq l\leq r\leq n\leq 2*10^6,1\leq m,a_i\leq 2*10^6$


首先我们考虑设$pre_i$表示上一个与$a_i$相等的位置。

所以$a_i$对答案有贡献当且仅当$l\leq pre_i<i\leq r$

这是一个经典的二维数点问题,cdq分治可以解决,但是。。。

所以我们换一种更优的做法,我们每次遍历到一个位置$a_i$的时候,考虑如果$l\leq pre_i<i\leq r$的时候,$i$会有贡献。

设$c_i$表示当前每个位置的贡献,所以对于上面的情况,令$c_{pre_{pre_i}}--,c_{pre_i}++$,因为这时之前要求$l\leq pre_{pre_i}$,现在只用$l\leq pre_i$了。

如果$r=i$,那么答案就是$\sum_{i=l}^rc_i$。所以可以离线下来之后用树状数组维护。

 #include<bits/stdc++.h>
#define Rint register int
using namespace std;
const int N = ;
int n, mx, m, a[N], num[N], lst[N], ans[N], now = ;
struct Query {
int l, r, id;
inline bool operator < (const Query &o) const {return r < o.r;}
} q[N];
int c[N];
inline int lowbit(int x){return x & -x;}
inline void change(int pos, int val){
while(pos <= n){
c[pos] += val;
pos += lowbit(pos);
}
}
inline int query(int pos){
int res = ;
while(pos){
res += c[pos];
pos -= lowbit(pos);
}
return res;
}
int main(){
scanf("%d%d%d", &n, &mx, &m);
for(Rint i = ;i <= n;i ++){
scanf("%d", a + i);
lst[i] = num[a[i]];
num[a[i]] = i;
}
for(Rint i = ;i <= m;i ++){
scanf("%d%d", &q[i].l, &q[i].r);
q[i].id = i;
}
sort(q + , q + m + );
for(Rint i = ;i <= m;i ++){
while(now <= q[i].r){
if(lst[now]) change(lst[now], );
if(lst[lst[now]]) change(lst[lst[now]], -);
++ now;
}
ans[q[i].id] = query(q[i].r) - query(q[i].l - );
}
for(Rint i = ;i <= m;i ++)
printf("%d\n", ans[i]);
}

Luogu4113

Luogu4113 [HEOI2012]采花的更多相关文章

  1. BZOJ 2743: [HEOI2012]采花

    2743: [HEOI2012]采花 Time Limit: 15 Sec  Memory Limit: 128 MBSubmit: 2056  Solved: 1059[Submit][Status ...

  2. [bzoj2743][HEOI2012]采花(树状数组+离线)

    2743: [HEOI2012]采花 Time Limit: 15 Sec  Memory Limit: 128 MBSubmit: 1832  Solved: 954[Submit][Status] ...

  3. BZOJ 2743: [HEOI2012]采花( 离线 + BIT )

    处理出每个数下一个出现的位置, 然后按左端点排序回答询问.处理当前数去除的影响 ------------------------------------------------------------ ...

  4. BZOJ_2743_[HEOI2012]采花_离线+树状数组

    BZOJ_2743_[HEOI2012]采花_离线+树状数组 Description 萧芸斓是Z国的公主,平时的一大爱好是采花.今天天气晴朗,阳光明媚,公主清晨便去了皇宫中新建的花园采花 .花园足够大 ...

  5. BZOJ 2743: [HEOI2012]采花 离线树状数组

    2743: [HEOI2012]采花 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=2743 Description 萧芸斓是Z国的公主, ...

  6. 【BZOJ2743】[HEOI2012]采花 离线+树状数组

    [BZOJ2743][HEOI2012]采花 Description 萧芸斓是Z国的公主,平时的一大爱好是采花. 今天天气晴朗,阳光明媚,公主清晨便去了皇宫中新建的花园采花.花园足够大,容纳了n朵花, ...

  7. cogs:1619. [HEOI2012]采花/luogu P2056

    1619. [HEOI2012]采花 ★★☆   输入文件:1flower.in   输出文件:1flower.out   简单对比时间限制:5 s   内存限制:128 MB [题目描述] 萧薰儿是 ...

  8. 1619. [HEOI2012]采花

    1619. [HEOI2012]采花 ★★☆   输入文件:1flower.in   输出文件:1flower.out   简单对比 时间限制:5 s   内存限制:128 MB [题目描述] 萧薰儿 ...

  9. cogs1619. [HEOI2012]采花 x

    1619. [HEOI2012]采花 ★★☆   输入文件:1flower.in   输出文件:1flower.out   简单对比时间限制:5 s   内存限制:128 MB [题目描述] 萧薰儿是 ...

随机推荐

  1. Windows2016的 IIS中配置PHP7运行环境

    Windows2016的 IIS中配置PHP7运行环境 在Windows 的IIS(8.0)中搭建PHP运行环境: 一:安装IIS服务器 .进入控制面板>>程序和功能>>打开或 ...

  2. .Net Core---- 自带Json返回日期带T格式 解决

    前段时间再做core的列表显示中(前台代码是在.net core bootstrap集成框架上的(这是效果浏览地址:http://core.jucheap.com[效果地址来自:http://blog ...

  3. liunx redis集群添加密码

    第一种方法: 修改每个节点redis.conf配置文件: masterauth 123456 requirepass 123456 各个节点的密码都必须一致,否则Redirected就会失败 重新启动 ...

  4. [转]Windows下安装storm-0.9.1

    来源:https://www.cnblogs.com/liuruitao/p/4669657.html Windows下安装storm-0.9.1的详细步骤如下: 1.确定已经正确安装JDK1.6或J ...

  5. python---日常练习

    ##输入a,b,c,d4个整数,计算a+b-c*d的结果 #numa=input('请输入整数:'); #numb=input('请输入整数:'); #numc=input('请输入整数:'); #n ...

  6. Codeforces 947F. Public Service 构造

    原文链接https://www.cnblogs.com/zhouzhendong/p/CF947F.html 近5K码量构造题,CF血腥残暴! 题解 这里先定义 $FT(k)$ 表示一个菊花树多 k ...

  7. centos没有可用软件包 libgtk2

    在编写一个C程序,使用基于文本的终端图形编程库(curses)或图形界面(QT/GTK),分窗口显示三个并发进程的运行,因为centos并未安装gtk,所以运行命令行安装gtksudo yum -y ...

  8. 基于IPv6的数据包分析

    1.首先我们来构建拓扑:如下所示 2.对各个路由器进行配置使得网络ping通:命令如下 a)配置各路由器接口的IPv6地址,可由上图注释配置 b)配置各路由器的静态路由(此处举例R4) (global ...

  9. 重构file_get_contents实现一个带超时POST传值函数

    function wp_file_post_contents($url, $post = null) { $context = array(); if (is_array($post)) { ksor ...

  10. [Educational Round 5][Codeforces 616F. Expensive Strings]

    这题调得我心疲力竭...Educational Round 5就过一段时间再发了_(:з」∠)_ 先后找了三份AC代码对拍,结果有两份都会在某些数据上出点问题...这场的数据有点水啊_(:з」∠)_[ ...