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

和 HH的项链 那道题很像,也是类似的做法;

但不同的是这里的点只有有前驱时才起作用;

自己的思路还是不清晰,总想着遍历到的这个点如何如何...

其实跟这个点无关,只关注它的前驱,给前驱 +1,这个1就表示前驱和自己同时存在;

那么前驱的前驱 -1,因为它对现在的这个点已经没用了,而它曾经被 +1 过。

代码如下:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int const maxn=1e6+;
int n,c,m,f[maxn],a[maxn],lst[maxn],prt[maxn];
struct Q{int l,r,w,bh;}q[maxn];
int rd()
{
int ret=;char ch=getchar();
while(ch<''||ch>'')ch=getchar();
while(ch>=''&&ch<='')ret=ret*+ch-'',ch=getchar();
return ret;
}
bool cmp(Q x,Q y){return x.r<y.r;}
bool cmp2(Q x,Q y){return x.bh<y.bh;}
void add(int x,int k)
{
for(;x<=n;x+=(x&-x))f[x]+=k;
}
int query(int x)
{
int ret=;
for(;x;x-=(x&-x))ret+=f[x];
return ret;
}
int main()
{
n=rd(); c=rd(); m=rd();
for(int i=;i<=n;i++)a[i]=rd();
for(int i=;i<=m;i++)q[i].l=rd(),q[i].r=rd(),q[i].bh=i;
sort(q+,q+m+,cmp);
int tot=;
for(int i=;i<=n;i++)
{
if(!lst[a[i]]&&!prt[a[i]])lst[a[i]]=i;
else if(!prt[a[i]])
{
prt[a[i]]=lst[a[i]]; lst[a[i]]=i;
add(prt[a[i]],);
// add(i,1);
}
else
{
add(prt[a[i]],-);
prt[a[i]]=lst[a[i]]; lst[a[i]]=i;
add(prt[a[i]],);//
// add(i,1);
}
// printf("prt[%d]=%d lst[%d]=%d\n",a[i],prt[a[i]],a[i],lst[a[i]]);
// while(q[tot].r==i)q[tot].w=(query(i)-2*query(q[tot].l-1))/2,tot++;
while(q[tot].r==i)q[tot].w=query(i)-query(q[tot].l-),tot++;
}
sort(q+,q+m+,cmp2);
for(int i=;i<=m;i++)printf("%d\n",q[i].w);
return ;
}

bzoj2743 [HEOI2012]采花——树状数组+离线的更多相关文章

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

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

  2. [BZOJ2743] [HEOI2012] 采花 (树状数组)

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

  3. 【bzoj2743】[HEOI2012]采花 树状数组

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

  4. [HEOI2012]采花 树状数组 BZOJ 2743

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

  5. BZOJ 2743: [HEOI2012]采花 [树状数组 | 主席树]

    题意: 查询区间中出现次数$>2$的颜色个数 一眼主席树,区间中$l \le last[i] \le r$的个数减去$l \le last[last[i]] \le r$的个数,搞两颗主席树来做 ...

  6. 2016 Multi-University Training Contest 5 1012 World is Exploding 树状数组+离线化

    http://acm.hdu.edu.cn/showproblem.php?pid=5792 1012 World is Exploding 题意:选四个数,满足a<b and A[a]< ...

  7. SPOJ DQUERY树状数组离线or主席树

    D-query Time Limit: 227MS   Memory Limit: 1572864KB   64bit IO Format: %lld & %llu Submit Status ...

  8. D-query SPOJ 树状数组+离线

    D-query SPOJ 树状数组+离线/莫队算法 题意 有一串正数,求一定区间中有多少个不同的数 解题思路--树状数组 说明一下,树状数组开始全部是零. 首先,我们存下所有需要查询的区间,然后根据右 ...

  9. Necklace HDU - 3874 (线段树/树状数组 + 离线处理)

    Necklace HDU - 3874  Mery has a beautiful necklace. The necklace is made up of N magic balls. Each b ...

随机推荐

  1. Sencha Touch 2 实现跨域访问

    最近要做手机移动App,最后采用HTMML5来做框架用Sencha Touch,在数据交互时遇到了Ajax跨域访问,在Sencha Touch 2中,实现跨域访问可以使用Ext类库提供给我们的类Ext ...

  2. [NOIP2001] 提高组 洛谷P1027 Car的旅行路线

    题目描述 又到暑假了,住在城市A的Car想和朋友一起去城市B旅游.她知道每个城市都有四个飞机场,分别位于一个 矩形的四个顶点上,同一个城市中两个机场之间有一条笔直的高速铁路,第I个城市中高速铁路了的单 ...

  3. 【BZOJ2038】小Z的袜子(莫队)

    题意: 给定n个数a1, a2…… an与m个询问(L,R).对于每个询问,从aL, aL+1…… aR这R-L+1个数中随机取出两个数,求这两个数相同的概率. 数据范围:1<=n,m,ai&l ...

  4. python学习之 -- 数据序列化

    json / pickle 数据序列化 序列化定义:把变量从内存中变成可存储或传输的过程称为序列化.反序列化:把变量内容从序列化的对象重新读到内存里称为反序列胡. 序列化模块之--pickle使用注意 ...

  5. P1194 买礼物 洛谷

    https://www.luogu.org/problem/show?pid=1194 题目描述 又到了一年一度的明明生日了,明明想要买B样东西,巧的是,这B样东西价格都是A元. 但是,商店老板说最近 ...

  6. react 使用 eslint 的三种代码检查方案总结,多了解点--让代码更完美....

    1.介绍 ESLint 是一个可扩展,每条规则独立,被设计为完全可配置的lint工具. 可以用来检测代码,避免低级错误 可以用来规范代码的开发风格,统一代码习惯. 2.为什么使用 ESLint ? 统 ...

  7. hdu 3624 City Planning(暴力,也可扫描线)

    City Planning Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) To ...

  8. 【转】Wireshark技巧-过滤规则和显示规则

    原文: http://www.cnblogs.com/icez/p/3973873.html ----------------------------------------------------- ...

  9. spring 学习资料

    spring 官方教程 1.3.1 http://docs.spring.io/spring/docs/3.1.x/spring-framework-reference/html/index.html ...

  10. 设计模式 之代理(Proxy)模式

    为什么这里要定义代理呢?所谓代理代理,当然就是你不想做的事.找别人去做,这就是代理.所以,当你写代码的时候.你想保持类的简单性.重用性.你就能够把事件尽量都交给其他类去做.自己仅仅管做好自己的事.也就 ...