【[HEOI2012]采花】
\(HH\)的项链加强版,数据范围和题意都加强了
题意大概:给出n个数,求区间出现次数>=2的数的个数。
一眼莫队,可是我还不会莫队啊
那就树状数组吧
回忆一下\(HH\)的项链,套路差不多,那道题我们维护的是每一种颜色最后出现的位置,因为根据其最后出现的位置我们就可以判断其是否在区间里
而判断这道题也很简单,我们维护每一个颜色倒数第二次出现是在什么位置,这样就能判断其是否出现次数大于等于二了
还是离线+树状数组就可以啦
代码
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#define re register
#define lowbit(x) ((x)&(-x))
#define maxn 2000005
inline int read()
{
char c=getchar();
int x=0;
while(c<'0'||c>'9') c=getchar();
while(c>='0'&&c<='9')
x=(x<<3)+(x<<1)+c-48,c=getchar();
return x;
}
int c[2][maxn];
int n,m,T;
struct Ask
{
int l,r,rk;
}q[maxn];
inline int cmp(Ask K,Ask M)
{
return K.r<M.r;
}
inline void add(int x,int o,int val)
{
for(re int i=x;i<=n;i+=lowbit(i))
c[o][i]+=val;
}
inline int ask(int x,int o)
{
int ans=0;
for(re int i=x;i;i-=lowbit(i))
ans+=c[o][i];
return ans;
}
int a[maxn],pre[maxn],col_p[maxn],Ans[maxn];
int main()
{
n=read(),T=read(),m=read();
for(re int i=1;i<=n;i++) a[i]=read();
for(re int i=1;i<=m;i++)
q[i].l=read(),q[i].r=read(),q[i].rk=i;
std::sort(q+1,q+m+1,cmp);
for(re int i=1;i<=n;i++)
pre[i]=col_p[a[i]],col_p[a[i]]=i;
int now=1;
for(re int i=1;i<=n;i++)
{
if(!pre[i]) add(i,0,1);
else
{
if(!pre[pre[i]]) add(i,0,1),add(pre[i],1,1),add(pre[i],0,-1);
else
{
add(i,0,1),add(pre[i],0,-1);
add(pre[i],1,1),add(pre[pre[i]],1,-1);
}
}
while(i==q[now].r) Ans[q[now].rk]=ask(q[now].r,1)-ask(q[now].l-1,1),now++;
}
for(re int i=1;i<=m;i++)
printf("%d\n",Ans[i]);
return 0;
}
【[HEOI2012]采花】的更多相关文章
- BZOJ 2743: [HEOI2012]采花
2743: [HEOI2012]采花 Time Limit: 15 Sec Memory Limit: 128 MBSubmit: 2056 Solved: 1059[Submit][Status ...
- [bzoj2743][HEOI2012]采花(树状数组+离线)
2743: [HEOI2012]采花 Time Limit: 15 Sec Memory Limit: 128 MBSubmit: 1832 Solved: 954[Submit][Status] ...
- BZOJ 2743: [HEOI2012]采花( 离线 + BIT )
处理出每个数下一个出现的位置, 然后按左端点排序回答询问.处理当前数去除的影响 ------------------------------------------------------------ ...
- BZOJ_2743_[HEOI2012]采花_离线+树状数组
BZOJ_2743_[HEOI2012]采花_离线+树状数组 Description 萧芸斓是Z国的公主,平时的一大爱好是采花.今天天气晴朗,阳光明媚,公主清晨便去了皇宫中新建的花园采花 .花园足够大 ...
- BZOJ 2743: [HEOI2012]采花 离线树状数组
2743: [HEOI2012]采花 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=2743 Description 萧芸斓是Z国的公主, ...
- 【BZOJ2743】[HEOI2012]采花 离线+树状数组
[BZOJ2743][HEOI2012]采花 Description 萧芸斓是Z国的公主,平时的一大爱好是采花. 今天天气晴朗,阳光明媚,公主清晨便去了皇宫中新建的花园采花.花园足够大,容纳了n朵花, ...
- cogs:1619. [HEOI2012]采花/luogu P2056
1619. [HEOI2012]采花 ★★☆ 输入文件:1flower.in 输出文件:1flower.out 简单对比时间限制:5 s 内存限制:128 MB [题目描述] 萧薰儿是 ...
- 1619. [HEOI2012]采花
1619. [HEOI2012]采花 ★★☆ 输入文件:1flower.in 输出文件:1flower.out 简单对比 时间限制:5 s 内存限制:128 MB [题目描述] 萧薰儿 ...
- cogs1619. [HEOI2012]采花 x
1619. [HEOI2012]采花 ★★☆ 输入文件:1flower.in 输出文件:1flower.out 简单对比时间限制:5 s 内存限制:128 MB [题目描述] 萧薰儿是 ...
- [bzoj2743][HEOI2012]采花_树状数组
采花 bzoj-2743 HEOI-2012 题目大意:给定n朵花,每朵花有一个种类,m次询问:一段区间中至少出现两朵花的种类的个数. 注释:$1\le n,m\le10^6$. 想法:这个题超级像H ...
随机推荐
- (转)linux命令详解之useradd命令使用方法
linux命令详解之useradd命令使用方法 原文:http://blog.csdn.net/u011537073/article/details/51987121 Linux 系统是一个多用户多任 ...
- python读取excel表格生成sql语句 第一版
由于单位设计数据库表·,都用sql.不知道什么原因不用 powerdesign或者ermaster工具,建表很痛苦 作为程序猿当然要想办法解决,用Python写一个程序解决 需要用到 xlrd li ...
- 【ExtJS】关于自定义组件(一)
一.目的: ExtJS中提供了下拉日期选择控件Ext.form.field.Date与下拉时间选择控件Ext.form.field.Time.不过没有一个在选择日期时选择时间的控件datetimefi ...
- TOJ 1883 Domino Effect
Description Did you know that you can use domino bones for other things besides playing Dominoes? Ta ...
- HTML <frameset>不同frame之间传值
布局 左右30%--70%,点击左边的复选框,右边显示相应的反应. 代码 main2.html <html> <frameset cols="30%, 70%"& ...
- jquery的$.getScript在IE下的缓存问题
jquery的$.getScript在IE下的缓存问题
- springboot从入门到精通(二)
这一节我们一起用springboot开发一个应用程序,应用程序里的核心概念是玩家获取英雄列表上的英雄信息. 1.定义实体模型: 代码如下: package com.dota.herolist.enti ...
- 《本博客将搬至CSDN》 博客主QQ 654436731 有关于本博客任何文章的问题欢迎打扰
地址 http://blog.csdn.net/sajiazaici
- SSO单点登录三种情况的实现方式详解(转)
https://blog.csdn.net/ainuser/article/details/65631713
- Django的路由层(URLconf)
URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表:你就是以这种方式告诉Django,对于客户端发来的某个URL调用哪一段逻辑代码 ...