题目链接:https://www.luogu.org/problemnew/show/P1972

真是不懂为什么要卡莫队!

  1. #include <cmath>
  2. #include <cstdio>
  3. #include <cstring>
  4. #include <iostream>
  5. #include <algorithm>
  6. using namespace std;
  7. const int maxn = 2000100;
  8. int a[maxn], n, m, ans[maxn], last[maxn];
  9. struct Query{
  10. int l, r, p;
  11. }q[maxn];
  12. bool cmp(const Query &a, const Query &b)
  13. {
  14. return a.r<b.r;
  15. }
  16. struct BIT{
  17. int data[maxn], num;
  18. void add(int pos, int val)
  19. {
  20. while(pos <= num)
  21. {
  22. data[pos] += val;
  23. pos += (pos&(-pos));
  24. }
  25. return;
  26. }
  27. int sum(int pos)
  28. {
  29. int sum = 0;
  30. while(pos)
  31. {
  32. sum += data[pos];
  33. pos -= (pos&(-pos));
  34. }
  35. return sum;
  36. }
  37. int query(int l, int r)
  38. {
  39. return sum(r) - sum(l-1);
  40. }
  41. }bit;
  42. int main()
  43. {
  44. scanf("%d",&n);
  45. for(int i = 1; i <= n; i++)
  46. scanf("%d",&a[i]);
  47. bit.num = n;
  48. scanf("%d",&m);
  49. for(int i = 1; i <= m; i++)
  50. {
  51. scanf("%d%d",&q[i].l,&q[i].r);
  52. q[i].p = i;
  53. }
  54. sort(q+1,q+1+m,cmp);
  55. int Q = 0;
  56. for(int i = 1; i <= m; i++)
  57. {
  58. while(Q < q[i].r)
  59. {
  60. Q+=1;
  61. if(last[a[Q]])
  62. {
  63. bit.add(last[a[Q]],-1);
  64. bit.add(Q,1);
  65. last[a[Q]] = Q;
  66. }
  67. else
  68. {
  69. bit.add(Q,1);
  70. last[a[Q]] = Q;
  71. }
  72. }
  73. ans[q[i].p] = bit.query(q[i].l,q[i].r);
  74. }
  75. for(int i = 1; i <= m; i++)
  76. printf("%d\n",ans[i]);
  77. return 0;
  78. }

【luogu P1972 [SDOI2009]HH的项链】 题解的更多相关文章

  1. 洛谷P1972 [SDOI2009]HH的项链 题解

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

  2. 【题解】Luogu P1972 [SDOI2009]HH的项链

    原题传送门 莫队入门题 我博客里对莫队的介绍 很多人说这题卡莫队,但窝随便写了一个程序就过了qaq(虽说开了氧化) 我们在排序询问时,普通是这样qaq inline bool cmp(register ...

  3. luogu P1972 [SDOI2009]HH的项链 |树状数组 或 莫队

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

  4. Luogu P1972 [SDOI2009]HH的项链

    很清新自然凶猛的数据结构题,都是套路啊 我们可以考虑离线做,先把区间按右端点从小到大排序 首先注意到一种贝壳如果在一段中出现超过1次,那么它在前面或后面就无关紧要了 举一个例子: 对于数列1 2 3 ...

  5. 【题解】P1972 [SDOI2009]HH的项链 - 树状数组

    P1972 [SDOI2009]HH的项链 声明:本博客所有题解都参照了网络资料或其他博客,仅为博主想加深理解而写,如有疑问欢迎与博主讨论✧。٩(ˊᗜˋ)و✧*。 题目描述 \(HH\) 有一串由各种 ...

  6. 洛谷 P1972 [SDOI2009]HH的项链【莫队算法学习】

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

  7. 洛谷 P1972 [SDOI2009]HH的项链 解题报告

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

  8. 洛谷——P1972 [SDOI2009]HH的项链(线段树)

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

  9. 洛谷 P1972 [SDOI2009]HH的项链-二维偏序+树状数组+读入挂(离线处理,思维,直接1~n一边插入一边查询),hahahahahahaha~

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

随机推荐

  1. cloudermanager安装时database connection出现Unexpected error. Unable to verify database connection(图文详解)

    不多说,直接上干货! http://www.aboutyun.com/forum.php?mod=viewthread&tid=20455&extra=&page=2 欢迎大家 ...

  2. this,super,和继承

    this是指当前对象的引用,super是指直接父类的引用 比如 我建造一个类 public class Person(){ private String name; private  int age; ...

  3. The Java serialization algorithm revealed---reference

    Serialization is the process of saving an object's state to a sequence of bytes; deserialization is ...

  4. 阻止事件的默认行为,例如click <a>后的跳转~

    在W3C中,使用preventDefault()方法: 在IE中,使用window.event.returnValue = false.

  5. pL/SQL 创建DBLIKN

    某些时候,需要关联不同的数据库进行数据查询.操作等. 在Oracle中,关联不同的数据库进行表关联,就要用到了数据库连接(DB link). 创建DB link有两种方法:通过SQL语句创建,通过可视 ...

  6. php服务端学习感想

    php是全世界web开发领域最受欢迎的语言,学习php的人一般都会些前端,懂些html/js/css等,php用得最多的是用于写业务逻辑.如果浮于表面,写过几个月php的人和写几年php的人可能差别不 ...

  7. python 爬虫初试

    python3.5  抓网易新闻的排行榜上的新闻,主要用自带的request模块和lxml import re from urllib import request from lxml import ...

  8. SQLAlchemy的使用---外键ForeignKey数据库创建与连接

    # 一对多建表操作 from sqlalchemy.ext.declarative import declarative_base Base = declarative_base() from sql ...

  9. jq on方法绑定多个事件

    一.jquery为多个选择器绑定同一个事件 $("#start,#end").on("click",function(){ alert("The pa ...

  10. nginx下的nagios pnp4nagios

    #Spawn-FCGI 一个通用的FastCGI管理服务器,它是lighttpd中的一部份,很多人都用Lighttpd的Spawn-FCGI进行FastCGI模式下的管理工作 #fcgiwrap(Si ...