离线做法:分别处理每个编号上的各种询问和操作,接着就能用树状数组维护。

  1. #include <cstdlib>
  2. #include <cstdio>
  3. #include <cstring>
  4. #include <cctype>
  5. #include <cmath>
  6. #include <algorithm>
  7. #include <iostream>
  8. #define rep(i, l, r) for(int i=l; i<=r; i++)
  9. #define clr(x, c) memset(x, c, sizeof(x))
  10. #define lowbit(x) (x&-x)
  11. #define maxn 123456
  12. #define s(x) Size[x]
  13. #define k(x) Key[x]
  14. using namespace std;
  15. inline int read()
  16. {
  17. int x=0, f=1; char ch=getchar();
  18. while (!isdigit(ch)) {if (ch=='-') f=-1; ch=getchar();}
  19. while (isdigit(ch)) x=x*10+ch-'0', ch=getchar();
  20. return x*f;
  21. }
  22. struct node{int x, y, k, type, q;} q[maxn*4];
  23. bool cmp(node a, node b){return a.k<b.k || (a.k==b.k && a.q<b.q);}
  24. int n, m, ans[maxn*4], Key[maxn*4], Size[maxn*4], tot;
  25.  
  26. inline void Add(int x, int k){while (x<=n) s(x)+=k, x+=lowbit(x);}
  27. inline int Query(int x){int now=0; while (x>0) now+=s(x), x-=lowbit(x); return now;}
  28. int main()
  29. {
  30. n=read(), m=read();
  31. rep(i, 1, n) q[++tot]=(node){i, 1, k(i)=read(), 0, tot};
  32. char ch[5]; rep(i, 1, m)
  33. {
  34. scanf("%s", ch); int x=read(), y=read();
  35. if (ch[0]=='C') q[++tot]=(node){x, -1, k(x), 0, tot}, q[++tot]=(node){x, 1, k(x)=y, 0, tot};
  36. else q[++tot]=(node){x, y, read(), 1, tot};
  37. }
  38. rep(i, 1, tot) ans[i]=-1;
  39. sort(q+1, q+1+tot, cmp);
  40. int s=1; rep(t, 1, tot)
  41. {
  42. if (q[t].k==q[t+1].k) continue;
  43. clr(Size, 0);
  44. rep(i, s, t)
  45. if (!q[i].type) Add(q[i].x, q[i].y); else ans[q[i].q]=Query(q[i].y)-Query(q[i].x-1);
  46. s=t+1;
  47. }
  48. rep(i, 1, tot) if (ans[i]!=-1) printf("%d\n", ans[i]);
  49. }

HUST-1407 郁闷的小J的更多相关文章

  1. 洛谷P2464 [SDOJ2008]郁闷的小J

    洛谷P2464 [SDOJ2008]郁闷的小J 题目描述 小J是国家图书馆的一位图书管理员,他的工作是管理一个巨大的书架.虽然他很能吃苦耐劳,但是由于这个书架十分巨大,所以他的工作效率总是很低,以致他 ...

  2. 洛谷P2464 [SDOI2008] 郁闷的小j [分块]

    题目传送门 郁闷的小j 题目描述 小J是国家图书馆的一位图书管理员,他的工作是管理一个巨大的书架.虽然他很能吃苦耐劳,但是由于这个书架十分巨大,所以他的工作效率总是很低,以致他面临着被解雇的危险,这也 ...

  3. [SDOI2008]郁闷的小J(分块)

    [SDOI2008]郁闷的小J 题目描述 小J是国家图书馆的一位图书管理员,他的工作是管理一个巨大的书架.虽然他很能吃苦耐劳,但是由于这个书架十分巨大,所以他的工作效率总是很低,以致他面临着被解雇的危 ...

  4. 山东省选 郁闷的小J

    小J是国家图书馆的一位图书管理员,他的工作是管理一个巨大的书架.虽然他很能吃苦耐劳,但是由于这个书架十分巨大,所以他的工作效率总是很低,以致他面临着被解雇的危险,这也正是他所郁闷的. 具体说来,书架由 ...

  5. 【山东省选2008】郁闷的小J 平衡树Treap

    小J是国家图书馆的一位图书管理员,他的工作是管理一个巨大的书架.虽然他很能吃苦耐劳,但是由于这个书架十分巨大,所以他的工作效率总是很低,以致他面临着被解雇的危险,这也正是他所郁闷的.具体说来,书架由N ...

  6. P2464 [SDOI2008]郁闷的小J

    题目描述 小J是国家图书馆的一位图书管理员,他的工作是管理一个巨大的书架.虽然他很能吃苦耐劳,但是由于这个书架十分巨大,所以他的工作效率总是很低,以致他面临着被解雇的危险,这也正是他所郁闷的. 具体说 ...

  7. fhqtreap - Luogu 2464 [SDOI2008]郁闷的小J

    [SDOI2008]郁闷的小JJ 题目描述 小J是国家图书馆的一位图书管理员,他的工作是管理一个巨大的书架.虽然他很能吃苦耐劳,但是由于这个书架十分巨大,所以他的工作效率总是很低,以致他面临着被解雇的 ...

  8. 2018.09.26 洛谷P2464 [SDOI2008]郁闷的小J(map+vector)

    传送门 本来出题人出出来想考数据结构的. 但是我们拥有map+vector/set这样优秀的STL,因此直接用map离散化,vector存下标在里面二分找答案就行了. 代码: #include< ...

  9. 【洛谷 P2464】[SDOI2008]郁闷的小J(线段树)

    题目链接 这题我很久之前用分块写过,没写出来.. 今天又看到了,于是下决心把这题做出来. 这次我用线段树写的,直接对每本书的编号Hash一下然后离散化然后各建一棵线段树,维护当前编号在某个位置有没有书 ...

随机推荐

  1. IM云通信行业步入快车道,谁将成为代表中国的全球IM“独角兽”?

    2016年,Twilio的成功上市,以及抢眼的股价表现,拓宽了全球云通信行业的想象空间,行业内公司估值水平也集体上调. 在中国,IM云通信行业也从2016年开始进入了一个“黄金发展时期”,一批如融云. ...

  2. 虚拟机VMware Workstation Pro装Mac遇到的一些问题【总结】

    1. 问题:VM找不到Apple Mac X(M)? 解决方法:在网上找unlocker20*下载: 电脑装一个python3版本以下的版本(装python,主要是编译.因为下载的插件是python写 ...

  3. UVA 1149 Bin Packing 装箱(贪心)

    每次选最大的物品和最小的物品放一起,如果放不下,大物体孤独终生,否则相伴而行... 答案变得更优是因为两个物品一起放了,最大的物品是最难匹配的,如果和最小的都放不下的话,和其它匹配也一定放不下了. # ...

  4. 10.1 plan

    1951    [Sdoi2010]古代猪文  Sdoi2010 Contest2   807 1928 1566    [NOI2009]管道取珠       806 1429 2756    [S ...

  5. c#和Java中的接口

    使用场景: 在c#和Java中: 1.接口可以实现“多继承”(多实现),一个类只能继承自一个父类,但是可以实现多个接口. 2.接口解决了不同类型之间的多态问题,比如鱼与船不是同一类型,但是都能在水里“ ...

  6. FTPClient:enterLocalPassiveMode()方法简单说明

    问题:在Java程序中,使用FTPClient下载FTP文件的时候,可以下载到FTP服务器上的文件夹,但是里面的文件没有下载到本地. 分析:这个涉及到FTP在使用的过程中,客户端和服务端连接过程中,端 ...

  7. 01Qt中的隐式共享

    隐式共享 ​ 隐式共享又称为回写复制(copy on write).当两个对象共享同一分数据时(通过浅拷贝实现数据共享),如果数据不改变,则不进行数据的复制.而当某个对象需要需要改变数据时,则进行深拷 ...

  8. python入门:while循环里面True和False的作用,真和假

    #!/usr/bin/env python # -*- coding:utf-8 -*- #while循环里面True和False的作用,真和假 """ n1等于真(Tr ...

  9. 【 android】When an app is installed on the external storage

    When an app is installed on the external storage: The .apk file is saved to the external storage, bu ...

  10. python操作日志的封装

    前言 曾经转载过一篇关于python日志模块logging的详解 https://www.cnblogs.com/linuxchao/p/linuxchao-log.html, 虽然这篇文章是别人写的 ...