[题目链接]

https://www.lydsy.com/JudgeOnline/problem.php?id=2743

[算法]

首先预处理nxt[]数组 , 其中 , nxt[i]表示下一个和i号位颜色相同的位置 , 然后离线 , 将询问按左端点排序 , 每次将nxt[i]减一 , nxt[nxt[i]]加一

用树状数组维护即可 , 详见代码

时间复杂度 : O(MlogN)

[代码]

#include<bits/stdc++.h>
using namespace std;
const int MAXN = 1e6 + ; struct Que
{
int l , r , id;
} q[MAXN]; int n , c , m;
int a[MAXN] , ans[MAXN] , pre[MAXN] , nxt[MAXN];
bool visited[MAXN]; struct Binary_Indexed_Tree
{
int c[MAXN];
inline int lowbit(int x)
{
return x & (-x);
}
inline void add(int pos,int value)
{
if (!pos) return;
for (int i = pos; i <= n; i += lowbit(i))
c[i] += value;
}
inline int query(int pos)
{
int ret = ;
if (!pos) return ;
for (int i = pos; i; i -= lowbit(i))
ret += c[i];
return ret;
}
inline int query(int l,int r)
{
return query(r) - query(l - );
}
} bit; template <typename T> inline void chkmax(T &x,T y) { x = max(x,y); }
template <typename T> inline void chkmin(T &x,T y) { x = min(x,y); }
template <typename T> inline void read(T &x)
{
T f = ; x = ;
char c = getchar();
for (; !isdigit(c); c = getchar()) if (c == '-') f = -f;
for (; isdigit(c); c = getchar()) x = (x << ) + (x << ) + c - '';
x *= f;
}
inline bool cmp(Que a,Que b)
{
return a.l < b.l;
} int main()
{ read(n); read(c); read(m);
for (int i = ; i <= n; i++) read(a[i]);
for (int i = n; i >= ; i--)
{
if (!visited[a[i]])
{
visited[a[i]] = true;
pre[a[i]] = i;
continue;
} else
{
nxt[i] = pre[a[i]];
pre[a[i]] = i;
}
}
memset(visited,false,sizeof(visited));
for (int i = ; i <= n; i++)
{
if (!visited[a[i]])
{
bit.add(nxt[i],);
visited[a[i]] = true;
}
}
for (int i = ; i <= m; i++)
{
read(q[i].l); read(q[i].r);
q[i].id = i;
}
sort(q + ,q + m + ,cmp);
int cur = ;
for (int i = ; i <= m; i++)
{
while (cur < q[i].l)
{
bit.add(nxt[cur],-);
bit.add(nxt[nxt[cur]],);
++cur;
}
ans[q[i].id] = bit.query(q[i].r) - bit.query(q[i].l - );
}
for (int i = ; i <= m; i++) printf("%d\n",ans[i]); return ; }

[HEOI 2012] 采花的更多相关文章

  1. [BZOJ 2743] [HEOI 2012] 采花

    Description 萧芸斓是Z国的公主,平时的一大爱好是采花.今天天气晴朗,阳光明媚,公主清晨便去了皇宫中新建的花园采花.花园足够大,容纳了 \(n\) 朵花,花有 \(c\) 种颜色(用整数 \ ...

  2. 解题:HEOI 2012 采花

    题面 题外话:LYD说他当时看错题了,考场爆零了,然后有了作诗这道题=.= 离线处理询问,按右端点递增排序,然后对于每种花$flw[i]$,我们求一个$pre[flw[i]]$表示这种花上一次出现的位 ...

  3. [ SDOI 2009 ] HH的项链 & [ HEOI 2012 ] 采花

    \(\\\) \(Description\) 给出一个长为\(N\)的序列,\(M\)次询问区间\([L_i,R_i]\)内不同数字的个数. \(N\in [1,5\times 10^4]\),\(M ...

  4. 采花 flower

    采花 flower 题目描述 萧芸斓是 Z 国的公主,平时的一大爱好是采花. 今天天气晴朗,阳光明媚,公主清晨便去了皇宫中新建的花园采花.花园足够大,容纳 了 n 朵花,花有 c 种颜色(用整数 1- ...

  5. BZOJ 2743 【HEOI2012】 采花

    题目链接:采花 这道题一眼看去,一个很显然的想法就是莫队.但是数据范围是\(10^6\)级别的,莫队显然已经过不去了. 其实感觉这道题和以前写过的一道题HH的项链很像.只不过那道题要求的是区间出现次数 ...

  6. 【HEOI2012】采花 BZOJ2743

    Description 萧芸斓是Z国的公主,平时的一大爱好是采花. 今天天气晴朗,阳光明媚,公主清晨便去了皇宫中新建的花园采花.花园足够大,容纳了n朵花,花有c种颜色(用整数1-c表示),且花是排成一 ...

  7. 采花 bzoj 2743

    采花(1s 128MB)flower [题目描述] 萧芸斓是Z国的公主,平时的一大爱好是采花. 今天天气晴朗,阳光明媚,公主清晨便去了皇宫中新建的花园采花.花园足够大,容纳了n朵花,花有c种颜色(用整 ...

  8. BZOJ 2743: [HEOI2012]采花

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

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

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

随机推荐

  1. 服务器安装oracle前的内存调整

    #当前内存大小为512MB,安装oracle时执行检查... Checking physical memory requirements ... Expected result: 922MB Actu ...

  2. SGU515:Recover path 【最短路】

    警告:这题卡SPFA,警告:这题卡SPFA 这不是演习 题目大意:给出一个无向图,以及一些点的序列,要找出一条最短的路径使得通过所有点,题目保证存在一条头尾都在点的序列中的最短路满足题意 思路:没有最 ...

  3. 《TCP/IP详解卷1:协议》——第6章 ICMP:Internet控制报文协议(转载)

    1.引言 ICMP被认为是IP层的一个组成部分,它传递差错报文以及其他需要注意的信息.ICMP报文通常被IP层或更高层协议(TCP或UDP)使用.一些ICMP报文把差错报文返回给用户进程. ICMP报 ...

  4. iOS 如何查看崩溃日志

    参考网址: [转载]https://www.jianshu.com/p/4de55d73c82b [转载]https://blog.csdn.net/qq_26544491/article/detai ...

  5. 分享一下然让显卡满血复活的小技巧(GTX)

    分享一下然让显卡满血复活的小技巧 笔者在玩大型游戏卡顿15fps下载如下操作 GTX950玩大型游戏都不会卡帧率稳定在30fps 下载GeForce Experience下载更新最新驱动 下载如下程序 ...

  6. java IO与NIO

    场景:IO适用于大而少,NIO适用于小而多 转载:https://www.cnblogs.com/kzfy/p/5063467.html 传统的socket IO中,需要为每个连接创建一个线程,当并发 ...

  7. java代码编译过程

    简单随笔 java程序需要先编译成class文件然后才能执行,由于是编程成立机器代码,虚拟机加载内存的时候更快的执行. java文件编译成class文件步骤如下: 1)词法分析,检查每一个关键字单词是 ...

  8. pcre7.0在vc6.0编译

    (0)从http://gnuwin32.sourceforge.net/packages/pcre.htm  (pcre windows)下下载最新的windows平台源代码pcre-7.0-src. ...

  9. DELPHI跨平台的临界替代者

    在WINDOWS里面使用临界来保护多线程需要访问的共享对象,现在,DELPHI有了新的跨平台临界保护者--System.TMonitor 代码演示如下: FConnections := TObject ...

  10. Apache 处理svg工具包Apache(tm) Batik SVG Toolkit

    Apache™ Batik SVG Toolkit¶ Overview¶ Batik is a Java-based toolkit for applications or applets that ...