题意:

查询区间中出现次数$>2$的颜色个数


一眼主席树,区间中$l \le last[i] \le r$的个数减去$l \le last[last[i]] \le r$的个数,搞两颗主席树来做

然后就T了

因为bzoj上数据是1e6....

还是离线树状数组吧....

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstring>
  4. #include <algorithm>
  5. using namespace std;
  6. #define lc(x) t[x].l
  7. #define rc(x) t[x].r
  8. const int N=1e6+;
  9. inline int read(){
  10. char c=getchar();int x=,f=;
  11. while(c<''||c>''){if(c=='-')f=-;c=getchar();}
  12. while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
  13. return x*f;
  14. }
  15.  
  16. int n, k, Q, a[N], last[N], pos[N], l, r;
  17. struct ChairTree{
  18. struct meow{int l, r, sum;} t[N*];
  19. int sz, root[N];
  20. void ins(int &x, int l, int r, int p) {
  21. t[++sz] = t[x]; x=sz;
  22. t[x].sum++;
  23. if(l==r) return;
  24. int mid = (l+r)>>;
  25. if(p<=mid) ins(t[x].l, l, mid, p);
  26. else ins(t[x].r, mid+, r, p);
  27. }
  28. int que(int x, int y, int l, int r, int ql, int qr) {
  29. if(ql<=l && r<=qr) return t[y].sum - t[x].sum;
  30. else {
  31. int mid=(l+r)>>, ans=;
  32. if(ql<=mid) ans += que(lc(x), lc(y), l, mid, ql, qr);
  33. if(mid<qr) ans += que(rc(x), rc(y), mid+, r, ql, qr);
  34. return ans;
  35. }
  36. }
  37. }C1, C2;
  38. int main() {
  39. freopen("in","r",stdin);
  40. n=read(); k=read(); Q=read();
  41. for(int i=; i<=n; i++) a[i]=read(), last[i] = pos[a[i]], pos[a[i]] = i;
  42. for(int i=; i<=n; i++) {
  43. C1.root[i] = C1.root[i-], C1.ins(C1.root[i], , n, last[i]);
  44. C2.root[i] = C2.root[i-], C2.ins(C2.root[i], , n, last[last[i]]);
  45. }
  46. for(int i=; i<=Q; i++)
  47. l=read(), r=read(),
  48. printf("%d\n", C1.que(C1.root[l-], C1.root[r], , n, l, r) - C2.que(C2.root[l-], C2.root[r], , n, l, r) );
  49. }
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstring>
  4. #include <algorithm>
  5. using namespace std;
  6. #define lc(x) t[x].l
  7. #define rc(x) t[x].r
  8. const int N=1e6+;
  9. inline int read(){
  10. char c=getchar();int x=,f=;
  11. while(c<''||c>''){if(c=='-')f=-;c=getchar();}
  12. while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
  13. return x*f;
  14. }
  15.  
  16. int n, k, Q, a[N], last[N], pos[N], l, r;
  17. int c[N];
  18. inline void add(int p, int v) {if(p!=) for(;p<=n;p+=(p&-p)) c[p]+=v;}
  19. inline int sum(int p) {int ans=; for(;p;p-=(p&-p)) ans+=c[p]; return ans;}
  20. struct meow{
  21. int l, r, qid;
  22. bool operator <(const meow &a) const {return r<a.r;}
  23. }q[N];
  24. int ans[N], now;
  25. int main() {
  26. freopen("in","r",stdin);
  27. n=read(); k=read(); Q=read();
  28. for(int i=; i<=n; i++) a[i]=read();
  29. for(int i=; i<=Q; i++) l=read(), r=read(), q[i]=(meow){l, r, i};
  30. sort(q+, q++Q);
  31. now = ;
  32. for(int i=; i<=n; i++) {
  33. last[i] = pos[a[i]]; pos[a[i]] = i;
  34. add(last[i], ); add(last[last[i]], -);
  35. while(q[now].r == i) ans[q[now].qid] = sum(i) - sum(q[now].l-), now++;
  36. }
  37. for(int i=; i<=Q; i++) printf("%d\n", ans[i]);
  38. }

BZOJ 2743: [HEOI2012]采花 [树状数组 | 主席树]的更多相关文章

  1. zoj2112 树状数组+主席树 区间动第k大

    Dynamic Rankings Time Limit: 10000MS   Memory Limit: 32768KB   64bit IO Format: %lld & %llu Subm ...

  2. BZOJ_1901_Zju2112 Dynamic Rankings_树状数组+主席树

    BZOJ_1901_Zju2112 Dynamic Rankings_树状数组+主席树 题意: 给定一个含有n个数的序列a[1],a[2],a[3]……a[n],程序必须回答这样的询问:对于给定的i, ...

  3. 【bzoj1146】[CTSC2008]网络管理Network 倍增LCA+dfs序+树状数组+主席树

    题目描述 M公司是一个非常庞大的跨国公司,在许多国家都设有它的下属分支机构或部门.为了让分布在世界各地的N个部门之间协同工作,公司搭建了一个连接整个公司的通信网络.该网络的结构由N个路由器和N-1条高 ...

  4. 【bzoj3744】Gty的妹子序列 分块+树状数组+主席树

    题目描述 我早已习惯你不在身边, 人间四月天 寂寞断了弦. 回望身后蓝天, 跟再见说再见…… 某天,蒟蒻Autumn发现了从 Gty的妹子树(bzoj3720) 上掉落下来了许多妹子,他发现 她们排成 ...

  5. BZOJ_2120_数颜色_Set+树状数组+主席树

    BZOJ_2120_数颜色_Set+树状数组+主席树 Description 墨墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问.墨墨会像你发布如下指令: 1. Q L ...

  6. P1972 [SDOI2009]HH的项链[离线+树状数组/主席树/分块/模拟]

    题目背景 无 题目描述 HH 有一串由各种漂亮的贝壳组成的项链.HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义.HH 不断地收集新的贝壳,因此,他的项链 ...

  7. BZOJ 2743: [HEOI2012]采花 离线树状数组

    2743: [HEOI2012]采花 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=2743 Description 萧芸斓是Z国的公主, ...

  8. BZOJ 2743: [HEOI2012]采花

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

  9. BZOJ 2743: [HEOI2012]采花( 离线 + BIT )

    处理出每个数下一个出现的位置, 然后按左端点排序回答询问.处理当前数去除的影响 ------------------------------------------------------------ ...

随机推荐

  1. codeforce 375_2_b_c

    codeforce 375_2 标签: 水题 好久没有打代码,竟然一场比赛两次卡在边界条件上....跪 b.题意很简单...纯模拟就可以了,开始忘记了当字符串结束的时候也要更新两个值,所以就错了 #i ...

  2. hdu_1573 X问题(不互素的中国剩余定理)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1573 X问题 Time Limit: 1000/1000 MS (Java/Others)    Me ...

  3. oracle erp 表结构

    BOM模块常用表结构 表名: bom.bom_bill_of_materials 说明: BOM清单父项目 BILL_SEQUENCE_ID NUMBER 清单序号(关键字)ASSEMBLY_ITEM ...

  4. [国嵌笔记][036][关闭MMU和CACHE]

    关闭MMU和CACHE 1.Cache是一种容量小,但存取速度非常快的存储器,它保存最近用到的存储器中数据的拷贝.按功能分为ICache(指令Cache)和DCache(数据Cache) 2.虚拟地址 ...

  5. .29-浅析webpack源码之Resolver.prototype.resolve

    在上一节中,最后返回了一个resolver,本质上就是一个Resolver对象: resolver = new Resolver(fileSystem); 这个对象的构造函数非常简单,只是简单的继承了 ...

  6. 立即掌握SSM框架的要诀

    ssm框架的总结: 1. 首先是POM.xml 文件的配置,他的作用主要是添加依懒的关系和自动下载相关的包. 2.对jdbc.properties进行配置 ,作用就是连接你的数据库的配置. 3.对接着 ...

  7. 本地phpstudy时常停机连接失败,php.ini文件中9000端口问题

    2018/01/05 13:35:07 [error] 20508#19380: *1 WSARecv() failed (10054: An existing connection was forc ...

  8. Codeforces 895C - Square Subsets 状压DP

    题意: 给了n个数,要求有几个子集使子集中元素的和为一个数的平方. 题解: 因为每个数都可以分解为质数的乘积,所有的数都小于70,所以在小于70的数中一共只有19个质数.可以使用状压DP,每一位上0表 ...

  9. excel去除空格

    =SUBSTITUTE(Sheet1!A1," ","") 在sheet2中输入上述公式,然后再通过拖拽复制公式,即可以很快的将sheet1中的数据全部处理.

  10. linux_nginx环境配置

    rpm -ivh https://mirrors.aliyun.com/epel/epel-release-latest-6.noarch.rpm # 安装阿里的epel源 国内使用web站点最多的w ...