做法是每个询问先算出询问区间中花的种类减去区间中只有一朵花的花的种类,这两个子问题都不算难,具体看代码吧。询问可以离线处理,用树状数组维护,复杂度O(nlogn)。

  不知道是想的复杂了还是打的太low,运行时间有点久。。

  代码

  

 #include<cstdio>
#include<algorithm>
#include<vector>
#define pb push_back
#define mp make_pair
#define fi first
#define sc second
#define lb(x) (x&-x)
#define N 1000010
#define P 1000000007
using namespace std;
int n,c[N],C,m,i,a,j,b,ans[N],e[N];
int pos[N],next[N];
vector<int> vec[N];
vector<pair<int,int> > q[N],vec2[N];
void cc(int x,int w)
{
while (x<=n)
{
c[x]+=w;
x+=lb(x);
}
}
int sum(int x)
{
int ans=;
while (x)
{
ans+=c[x];
x-=lb(x);
}
return ans;
}
int main()
{
scanf("%d%d%d",&n,&C,&m);
for (i=;i<=n;i++)
{
scanf("%d",&a);
e[i]=a;
vec[pos[a]].pb(i);
next[pos[a]]=i;
pos[a]=i;
}
for (i=;i<=C;i++)
pos[i]=;
for (i=;i<=n;i++)
{
vec2[pos[e[i]]].pb(mp(i,next[i]));
pos[e[i]]=i;
} for (i=;i<=m;i++)
{
scanf("%d%d",&a,&b);
q[a].pb(mp(b,i));
}
for (i=;i<=n;i++)
{
if (i)
for (j=;j<q[i].size();j++)
ans[q[i][j].sc]=sum(q[i][j].fi)-sum(i-);
for (j=;j<vec[i].size();j++) cc(vec[i][j],);
}
for (i=;i<=n;i++) c[i]=;
for (i=;i<vec2[].size();i++) cc(vec2[][i].fi,-); for (i=;i<=n;i++)
{
if (i)
for (j=;j<q[i].size();j++)
ans[q[i][j].sc]-=sum(q[i][j].fi)-sum(i-);
for (j=;j<vec2[i].size();j++)
{
cc(vec2[i][j].fi,);
if (vec2[i][j].sc)
cc(vec2[i][j].sc,-);
}
}
for (i=;i<=m;i++)
printf("%d\n",ans[i]);
}

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

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

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

  2. [bzoj2743][HEOI2012]采花_树状数组

    采花 bzoj-2743 HEOI-2012 题目大意:给定n朵花,每朵花有一个种类,m次询问:一段区间中至少出现两朵花的种类的个数. 注释:$1\le n,m\le10^6$. 想法:这个题超级像H ...

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

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

  4. [bzoj2743][HEOI2012]采花(树状数组)

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

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

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

  6. BZOJ2743 HEOI2012采花(离线+树状数组)

    如果能够把所有区间内第二次出现某颜色的位置标记出来,树状数组查询一下就可以了. 考虑离线.按左端点从小到大排序,不断移动左端点并更新第二次出现的位置. #include<iostream> ...

  7. BZOJ-2743: [HEOI2012]采花 前缀和 树状数组

    BZOJ-2743 LUOGU:https://www.luogu.org/problemnew/show/P4113 题意: 给一个n长度的序列,m次询问区间,问区间中出现两次及以上的数字的个数.n ...

  8. bzoj2743: [HEOI2012]采花--离线树状数组+差分

    题目大意:给定一个区间,查询子区间里出现次数不小于二的数的个数 此题想了好久没想出来,后来是在网上学习的一个方法 首先按查询区间的右端点进行排序,按右端点从小到大处理 假设pre[a[i]]是与a[i ...

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

    http://www.cnblogs.com/proverbs/archive/2012/10/29/2745281.html (↑)这样处理之后,每次询问时,对于每种颜色,从1到其倒数第二次出现的位 ...

随机推荐

  1. WIN10 ANDROIDSTUDIO1.2 安装完首次启动报错

    环境 ACER NOTEBOOK  WIN10 ANNDROID 1.2 解决方案: 在Android Studio安装目录下的 bin 目录下,找到 idea.properties 文件,在文件最后 ...

  2. VC更换图标文件

    步骤 1. 删除图标 2. 在VC中移除图标 3. 用新图标替换原来图标 4. 添加图标到VC 5. 重新编译 参考文档 http://www.cnblogs.com/BloodAndBone/arc ...

  3. struts.xml 配置详解

    struts.xml是我们在开发中利用率最高的文件,也是Struts2中最重要的配置文件. 一下分别介绍一下几个struts.xml中常用到的标签 1.<include> 利用includ ...

  4. Project Management Process

    Project Management ProcessDescription .............................................................. ...

  5. 【转】Http Cache最基本的一些东西

    Http Cache最基本的一些东西 Cache浏览器IEwebkitApache  Http的Cache机制总共有4个组成部分: Cache-Control: max-age=N(seconds)  ...

  6. Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all the values along the path equals the given sum. For example: Given the below binary tree andsum =

    Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all ...

  7. Eclipse代码风格

    1.代码对齐风格:project...properties...Java Code Style...Formatter...Brance

  8. shapely and geos break在distance方法

    问题 from shapely.geometry import Point print Point(0,0).distance(Point(1,1)) 报错 python: GeometryCompo ...

  9. Vue.2.0.5-过渡状态

    过渡状态 Vue 的过渡系统提供了非常多简单的方法设置进入.离开和列表的动效.那么对于数据元素本身的动效呢,比如: 数字和运算 颜色的显示 SVG 节点的位置 元素的大小和其他的属性 所有的原始数字都 ...

  10. Vue.2.0.5-过渡效果

    概述 Vue 在插入.更新或者移除 DOM 时,提供多种不同方式的应用过渡效果.包括以下工具: 在 CSS 过渡和动画中自动应用 class 可以配合使用第三方 CSS 动画库,如 Animate.c ...