题目链接:传送门

题目大意:一个大小为 n 的数组,m组询问,每组询问[x,y]内<=v的数的数量。

题目思路:主席树(注意询问时数组下标越界问题)

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstdlib>
  4. #include <cmath>
  5. #include <algorithm>
  6. #include <cstring>
  7. #include <stack>
  8. #include <cctype>
  9. #include <queue>
  10. #include <string>
  11. #include <vector>
  12. #include <set>
  13. #include <map>
  14. #include <climits>
  15. #define lson rt<<1,l,mid
  16. #define rson rt<<1|1,mid+1,r
  17. #define fi first
  18. #define se second
  19. #define ping(x,y) ((x-y)*(x-y))
  20. #define mst(x,y) memset(x,y,sizeof(x))
  21. #define mcp(x,y) memcpy(x,y,sizeof(y))
  22. using namespace std;
  23. #define gamma 0.5772156649015328606065120
  24. #define MOD 1000000007
  25. #define inf 0x3f3f3f3f
  26. #define N 100005
  27. #define maxn 30010
  28. typedef pair<int,int> PII;
  29. typedef long long LL;
  30. LL read(){
  31. LL x=,f=;char ch=getchar();
  32. while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
  33. while(ch>=''&&ch<=''){x=(x<<)+(x<<)+ch-'';ch=getchar();}
  34. return x*f;
  35. }
  36.  
  37. int n,m,flag,L,R,sz;
  38. struct Seg{int l,r,v;}seg[N*];
  39. int a[N],b[N],root[N];
  40. void init(){
  41. root[]=sz=;
  42. mst(seg,);
  43. }
  44. void update(int &rot,int rt,int l,int r){
  45. seg[++sz]=seg[rot],rot=sz;
  46. ++seg[rot].v;
  47. if(l==r)return;
  48. int mid=l+r>>;
  49. if(L<=mid)update(seg[rot].l,lson);
  50. else update(seg[rot].r,rson);
  51. }
  52. int query(int L,int R,int rt,int l,int r,int v){
  53. if(l==r)return seg[R].v-seg[L].v;
  54. int mid=l+r>>,temp=;
  55. if(v<=mid)temp+=query(seg[L].l,seg[R].l,lson,v);
  56. else{
  57. temp+=seg[seg[R].l].v-seg[seg[L].l].v;
  58. temp+=query(seg[L].r,seg[R].r,rson,v);
  59. }
  60. return temp;
  61. }
  62. int main(){
  63. int i,j,group,x,y,v,Case=;
  64. group=read();
  65. while(group--){
  66. init();
  67. n=read(),m=read();
  68. for(i=;i<=n;++i)a[i]=read(),b[i]=a[i];
  69. sort(b+,b+n+);int _n=unique(b+,b+n+)-b-;
  70. for(i=;i<=n;++i){
  71. L=lower_bound(b+,b+_n+,a[i])-b;
  72. update(root[i]=root[i-],,,_n);
  73. }
  74. printf("Case %d:\n",++Case);
  75. while(m--){
  76. x=read(),y=read(),v=read();
  77. ++x,++y;
  78. L=root[x-],R=root[y];
  79. v=upper_bound(b+,b+_n+,v)-b-;
  80. if(v) printf("%d\n",query(L,R,,,_n,v));
  81. else printf("0\n");
  82. }
  83. }
  84. return ;
  85. }

HDU4417 (Super Mario)的更多相关文章

  1. hdu4417(Super Mario)—— 二分+划分树

    Super Mario Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  2. LPC(Low Pin Count) 与SIO(Super IO)

    记录bios学习的点点滴滴,虽然已经学了很长时间才发出来,但就当是温故而知新吧,由于水平有限,难免存在错误,望指正,同时感谢CSDN提供的平台. 1.LPC 定义:​ Intel所定义的PC接口,将以 ...

  3. 文件类似的推理 -- 超级本征值(super feature)

         基于内容的变长分块(CDC)技术,能够用来对文件进行变长分块.而后用来进行反复性检測,广泛用于去重系统中.后来又出现了对相似数据块进行delta压缩,进一步节省存储开销. 所以就须要一种高效 ...

  4. Gym - 101498G(Super Subarray )

    In this problem, subarray is defined as non-empty sequence of consecutive elements. We define a suba ...

  5. 数据库设计和ER模型-------之关系模型的基本概念(第二章)

    关系模型的基本术语 定义:用二维表格来表示实体集,用关键码表示实体之间联系的数据模型称为关系模型 有时也习惯称呼关系为表或表格,元组为行(Row),属性为列.关系中属性个数称为“元数”,元组个数称为“ ...

  6. 设计模式(十六)迭代器模式 Iterator

    什么时候需要用到迭代器模式? 有许多中方法,可以把对象堆起来放进一个集合(可以是数组.堆栈.列表.哈希表,等等). 每一种类型的集合,都有各自适用的时机.但是某个时间段,客户端可能希望去遍历这个集合. ...

  7. Python3 与 C# 面向对象之~继承与多态 Python3 与 C# 面向对象之~封装 Python3 与 NetCore 基础语法对比(Function专栏) [C#]C#时间日期操作 [C#]C#中字符串的操作 [ASP.NET]NTKO插件使用常见问题 我对C#的认知。

    Python3 与 C# 面向对象之-继承与多态   文章汇总:https://www.cnblogs.com/dotnetcrazy/p/9160514.html 目录: 2.继承 ¶ 2.1.单继 ...

  8. 清晰架构(Clean Architecture)的Go微服务: 依赖注入(Dependency Injection)

    在清晰架构(Clean Architecture)中,应用程序的每一层(用例,数据服务和域模型)仅依赖于其他层的接口而不是具体类型. 在运行时,程序容器¹负责创建具体类型并将它们注入到每个函数中,它使 ...

  9. HDU 4417 Super Mario(主席树求区间内的区间查询+离散化)

    Super Mario Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tota ...

随机推荐

  1. ASP.NET给DataGrid,Repeater等添加全选批量删除等功能

    很多情况下,在管理或者查看列表的时候我们需要很需要“全选”这个功能,这在ASP.NET中是非常容易实现的,下面我就将演示一点小代码实现这一功能.   实现全选的还是js的一个小函数:   [code] ...

  2. HDU 4280Island Transport(网络流之最大流)

    题目地址:pid=4280">http://acm.hdu.edu.cn/showproblem.php? pid=4280 这个题是一个纯最大流模板题..就是用来卡时间的.. 还好我 ...

  3. [svc]influxdb+grafana实战-各省份api访问成功率统计

    简单说下需求: 统计各个省份的 3大运营商的接口访问成功率,绘图展示 数据格式 {"mobile" : "15812345608", "provinc ...

  4. zoj 1562 反素数 附上个人对反素数性质的证明

    反素数的定义:对于不论什么正整数,其约数个数记为.比如,假设某个正整数满足:对随意的正整 数.都有,那么称为反素数. 从反素数的定义中能够看出两个性质: (1)一个反素数的全部质因子必定是从2開始的连 ...

  5. android.animation(6) - AnimatorSet

    上几篇给大家分别讲了ValueAnimator和ObjectAnimator,相比而言ObjectAnimator更为方便而且由于set函数是在控件类内部实现,所以封装性更好.而且在现实使用中一般而言 ...

  6. 每日英语:Online Education a New Frontier in China

    In a country as obsessed with education as China, it makes sense that online teaching has huge poten ...

  7. VS调试-添加命令行参数

    Project -> Properties -> Configuration Properties -> Debugging 在Command Arguments里填上即可

  8. 基于HTML5 Canvas 实现的 Loading 效果

    Sonic.js 是一个很小的 JavaScript 类,用于创建基于 HTML5 画布的加载图像.更强大的是 Sonic.js 还提供了基于现成的例子的创建工具,可以帮助你实现更多自定义的(Load ...

  9. node.js发http请求

    标准库中默认的HTTP模块 const https = require('https'); https.get('https://api.nasa.gov/planetary/apod?api_key ...

  10. create the web service by yourshelf

    start cmd node demo.js var http = require('http'); http.createServer(function (request, response) { ...