离线,按照l排序

注意到在区间里出现两次的颜色才有贡献,所以记录一个ne[i]表示i后第一个和i同色的花,维护一个l,每次处理询问的时候l单调右移,树状数组维护,在ne[ne[i]]位置++,在ne[i]位置--(因为这里已经++过了),这样区间查询的时候如果右端点超过ne[ne[i]]就能对答案有贡献

注意在开始的时候给有ne的第一次出现的颜色的位置++

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<algorithm>
  4. using namespace std;
  5. const int N=2000006;
  6. int n,c,m,a[N],ne[N],ans[N],t[N],p[N];
  7. struct qwe
  8. {
  9. int l,r,id;
  10. }q[N];
  11. bool cmp(const qwe &a,const qwe &b)
  12. {
  13. return a.l<b.l;
  14. }
  15. int read()
  16. {
  17. int r=0,f=1;
  18. char p=getchar();
  19. while(p>'9'||p<'0')
  20. {
  21. if(p=='-')
  22. f=-1;
  23. p=getchar();
  24. }
  25. while(p>='0'&&p<='9')
  26. {
  27. r=r*10+p-48;
  28. p=getchar();
  29. }
  30. return r*f;
  31. }
  32. void update(int x,int v)
  33. {
  34. for(int i=x;i<=n;i+=(i&(-i)))
  35. t[i]+=v;
  36. }
  37. int ques(int x)
  38. {
  39. int r=0;
  40. for(int i=x;i>=1;i-=(i&(-i)))
  41. r+=t[i];
  42. return r;
  43. }
  44. int main()
  45. {
  46. n=read(),c=read(),m=read();
  47. for(int i=1;i<=n;i++)
  48. a[i]=read();
  49. for(int i=n;i>=1;i--)
  50. ne[i]=p[a[i]],p[a[i]]=i;
  51. for(int i=1;i<=m;i++)
  52. q[i].l=read(),q[i].r=read(),q[i].id=i;
  53. sort(q+1,q+1+m,cmp);
  54. for(int i=1;i<=c;i++)
  55. if(p[i]&&ne[p[i]])
  56. update(ne[p[i]],1);
  57. for(int i=1,l=1;i<=m;i++)
  58. {
  59. for(;l<q[i].l;l++)
  60. {
  61. if(ne[l])
  62. update(ne[l],-1);
  63. if(ne[ne[l]])
  64. update(ne[ne[l]],1);
  65. }
  66. ans[q[i].id]=ques(q[i].r)-ques(q[i].l-1);
  67. }
  68. for(int i=1;i<=m;i++)
  69. printf("%d\n",ans[i]);
  70. return 0;
  71. }

bzoj 2743: [HEOI2012]采花【树状数组】的更多相关文章

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

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

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

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

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

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

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

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

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

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

  6. bzoj2743 [HEOI2012]采花——树状数组+离线

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2743 和 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. topcoder 649 DIV2

    8 A:模拟 9:B:终于看懂题目... 题意:最多分解K次 每分钟一个数可以分解成两个数 或者-1: 关键字:DP,记忆花搜索. DP[I][J]=min(dp[i][j],1+max(dp[ii] ...

  2. R-Tree空间索引算法的研究历程和最新进展分析

    转自原文 R-Tree空间索引算法的研究历程和最新进展分析,2008 摘要:本文介绍了空间索引的概念.R-Tree数据结构和R-Tree空间索引的算法描述,并从R-Tree索引技术的优缺点对R-Tre ...

  3. &quot;What&#39;s New&quot; WebPart in SharePoint

    "What's New" WebPart in SharePoint 项目描写叙述         这是一个自己定义WebPart,能够显示一个列表,这个列表项目是在SharePo ...

  4. 【Nginx】如何使用http配置

    处理http配置项可以分为下面4个步骤: 1)创建数据结构用于存储配置项对应的参数 2)设定配置项在nginx.conf中出现时的限制条件与回调方法 3)实现第2步中的回调方法,或者使用Nginx框架 ...

  5. MySQL 资源大全

    干货!MySQL 资源大全 提交 我的留言 加载中 已留言 shlomi-noach 发起维护的 MySQL 资源列表,内容覆盖:分析工具.备份.性能测试.配置.部署.GUI 等. 伯乐在线已在 Gi ...

  6. Codeforces Round #253 (Div. 1) A Borya and Hanabi

    A. Borya and Hanabi time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  7. Idea 13 新建maven项目

    1.此时生成的maven项目没有web文件夹 file→New Project→Maven→Next→GID.AID (NewDemo)→Next→ProjectName(NewDemo)→Finis ...

  8. C++实现KMP模式匹配算法

    #include<iostream> #include<string> #include<vector> using namespace std; void Nex ...

  9. ecshop广告宽度值必须在1到1024之间的解决方法

    ecshop加广告出现广告位的宽度值必须在1到1024之间的解决方法,这个问题是今天刚刚发现的,我就郁闷了,如今1024宽度的广告能做什么.你看看京东,天猫,非常多都是大型的横幅广告,这点ecshop ...

  10. Notepad++ 两个格式化插件

    格式化HTML--Tidy2 本来都可以通过Notepad++中的“插件>Plugin Manager>Show Plugin Manager>Tidy2” 这种方式来安装,不过内地 ...