[题目链接]

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. C# 判断字符串为空的4种方法及效率

    在程序开发过程中,少不了要处理字符串,并且常常要判断字符串是否为空,通常有哪些判断方法,以及不同方法的效率又怎么样? 在 C# 中,通常有三种判断字符串是否为空的方法,下面分别探讨. 1.str.Le ...

  2. Tsinghua OJ Zuma

    Description Let's play the game Zuma! There are a sequence of beads on a track at the right beginnin ...

  3. linux命令1——基础

    Rm 删除命令 Rm [选项][文件] 删除一个文件或者目录 选项:r 递归的删除文件夹及其子文件,f 忽略不存在的文件(不提示) (2)rm删除目录下所有文件,但不删除目录 >>rm - ...

  4. .NET Core windows开发环境 + Git代码控管 + Docker 部署环境搭建

    开发环境准备 下载vs code,.NET Core sdk: https://www.microsoft.com/net/core#windowscmd 目前最新版为code 1.8.1,.NET ...

  5. 设置select的默认选项

    2014-01-07 09:54:34|   通过后台传出的值进行选择默认项的设置 <select name="user_id" id="user_id" ...

  6. [Bzoj4260]Codechef REBXOR(trie树)

    4260: Codechef REBXOR Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 1534  Solved: 669[Submit][Stat ...

  7. Html.EditorFor 加 htmlAttributes

    @Html.EditorFor(m => m.Name, new { htmlAttributes = new { @required = "true", @anotherA ...

  8. MySQL注释(转)

    MySQL支持3种注释风格: 1.从‘#’字符从行尾. 2.从‘-- ’序列到行尾.请注意‘-- ’(双破折号)注释风格要求第2个破折号后面至少跟一个空格符(例如空格.tab.换行符等等). 3.从/ ...

  9. Office WORD里面打字,后面的字自动被删除怎么办

    word或其他编辑器里打字以后其后面的字就被自动删除了-解决方案   2011-09-26 14:52:09|  分类: 电脑维护|字号 订阅 解决方法:  再按一下 Insert键 就OK啦 今天有 ...

  10. Javascript 运行机制

    先看一下下面这段js代码: console.log('1'); setTimeout(function(){ console.log('2'); },0); console.log('3'); 请问打 ...