Description

小M听说会变魔术的男生最能吸引女生注意啦~所以小M费了九牛二虎之力终于学会了一个魔术:
首先在桌面上放N张纸片,每张纸片上都写有一个数字。小M每次请女生给出一个数字x,然后划定任意一个区间[L,R],小M就能立马告诉对方这个区间内有多少个数字比x小。
小M当然是知道答案的啦,但是你呢?

Input

第一行为一个数字T(T<=10)表示数据组数
第二行为两个数字n、m(1<=n,m<=200000)表示序列长度和询问次数
第三行为n个数字表示原始序列A (0 < A[i] < 1000000000)
接下来m行,每行三个数字l r x 表示询问[l,r]之间小于x的有几个(1<=l<=r<=n,0<=x<=1000000000)
保证数据合法

Output

输出为m行,第i行表示第i个询问的答案

Sample Input

1
10 3
2 3 6 9 8 5 4 7 1 1
1 3 5
2 8 7
3 6 4

Sample Output

2
4
0

Hint


Submit Page

一道可持久化线段树的水体,。。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<vector>
#include<algorithm>
using namespace std;
const int maxn=2e5+10;
int a[maxn],root[maxn],T,n,m,l,r,x,cnt;
vector<int> v; struct Node{
int l,r,sum;
} tree[maxn*40]; int getid(int x) { return lower_bound(v.begin(),v.end(),x)-v.begin()+1;} void update(int y,int &x,int l,int r,int k)
{
tree[++cnt]=tree[y],tree[cnt].sum++,x=cnt;
if(l==r) return ;
int mid=(l+r)>>1;
if(k<=mid) update(tree[y].l,tree[x].l,l,mid,k);
else update(tree[y].r,tree[x].r,mid+1,r,k);
} int query(int y,int x,int l,int r,int pos)
{
if(l==r) return tree[x].sum-tree[y].sum;
int mid=(l+r)>>1;
int sum=tree[tree[x].l].sum-tree[tree[y].l].sum;
if(pos<=mid) return query(tree[y].l,tree[x].l,l,mid,pos);
else return sum+query(tree[y].r,tree[x].r,mid+1,r,pos);
} int main()
{
//ios::sync_with_stdio(false);
scanf("%d",&T);
while(T--)
{
v.clear();cnt=0;
memset(root,0,sizeof root);
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++) scanf("%d",a+i),v.push_back(a[i]);
sort(v.begin(),v.end());v.erase(unique(v.begin(),v.end()),v.end());
for(int i=1;i<=n;i++) update(root[i-1],root[i],1,n,getid(a[i]));
for(int i=0;i<m;i++)
{
scanf("%d%d%d",&l,&r,&x);
int temp=getid(x);
if(temp==1) printf("0\n");
else if(temp>v.size()) printf("%d\n",r-l+1);
else printf("%d\n",query(root[l-1],root[r],1,n,temp-1));
}
}
return 0;
}
/**********************************************************************
Problem: 1981
User: song_hai_lei
Language: C++
Result: AC
Time:1016 ms
Memory:98960 kb
**********************************************************************/

小M的魔术表演的更多相关文章

  1. 【牛客】小w的魔术扑克 (并查集?? 树状数组)

    题目描述 小w喜欢打牌,某天小w与dogenya在一起玩扑克牌,这种扑克牌的面值都在1到n,原本扑克牌只有一面,而小w手中的扑克牌是双面的魔术扑克(正反两面均有数字,可以随时进行切换),小w这个人就准 ...

  2. Day1T3小w的魔术扑克——图论

    为什么不搞\(T2\)??? 因为我太菜了,那题我是真的搞不出来 题目描述 链接:https://ac.nowcoder.com/acm/contest/1100/C 来源:牛客网 小\(w\)喜欢打 ...

  3. [CSP-S模拟测试]:小W的魔术(数学 or 找规律)

    题目传送门(内部题130) 输入格式 第一行一个整数$n$,表示字符串的长度. 第二行一个只包含小写字母的字符串$s$. 输出格式 一行一个整数表示答案对$998244353$取模后的结果. 样例 样 ...

  4. HTTP协议/RTSP协议/RTMP协议的区别

    RTSP. RTMP.HTTP的共同点.区别 共同点: 1:RTSP RTMP HTTP都是在应用应用层. 2: 理论上RTSP RTMPHTTP都可以做直播和点播,但一般做直播用RTSP RTMP, ...

  5. (译)开发优秀的虚拟现实体验:从开发I Expect You to Die中总结的六个要点

    这篇文章是我从网上找来的,我觉得他非常详细的解释了VR发展的需求和必要.我认为通过这篇文章可以让大家了解VR. 译者写在最前: 来到追光动画有好几个月了,抱歉这段时间也没有什么文章与大家分享,我现在在 ...

  6. [iOS翻译]《iOS7 by Tutorials》系列:iOS7的设计精髓(下)

    我们继续上篇的内容 四.聚焦于内容 在iOS7里,强调的不是眼花缭乱的装饰效果,而是最重要的内容本身. 下面我们来探讨这个主题: 1.删除不必要的内容 伟大的设计更多是减法和加法的组合. 虽然很酷的想 ...

  7. RTMP直播应用与延时分析

    直播应用中,RTMP和HLS基本上可以覆盖所有客户端观看,HLS主要是延时比较大,RTMP主要优势在于延时低. 一.应用场景 低延时应用场景包括:  .  互动式直播:譬如2013年大行其道的美女主播 ...

  8. 为什么是Spring Boot

    原文:https://dzone.com/articles/why-springboot 作者:Siva Prasad Reddy Katamreddy 译者:Oopsguy 本文介绍将各种Sprin ...

  9. 【转】《iOS7 by Tutorials》系列:iOS7的设计精髓(下)

    四.聚焦于内容 在iOS7里,强调的不是眼花缭乱的装饰效果,而是最重要的内容本身. 下面我们来探讨这个主题: 1.删除不必要的内容 伟大的设计更多是减法和加法的组合. 虽然很酷的想法是很重要,但还有更 ...

随机推荐

  1. 设置eclipse的字体大小

    window->preferences->general->Appearance->Colors and Fonts->basic->text font->点 ...

  2. windows,linux安装redis

    windows安装redis   Redis介绍 Redis是什么 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string.list ...

  3. VMware安装Ubuntu 16.04.4 LTS

    1.下载Ubuntu镜像 https://www.ubuntu.com/download/desktop 2.创建新的虚拟机 3. 4.这里默认即可,可以不选 5. 6. 7.这里位置可以随时改 8. ...

  4. Python字符串类型判断错误

    Python里面常用的字符串类型有str和unicode,如果要判断一个对象的类型,最好用basestring,否则可能会判断错误: str1 = "hello" str2 = u ...

  5. WordPress 去掉底部的自豪的采用WordPress

    WordPress 去掉底部的自豪的采用WordPress  

  6. ArcGIS API For Javascript :读取 CSV 文件的方法

    我们临时会遇到一些测试数据,通常从数据库中以 CSV 格式导出.最简单实用的方法就是使用 ajax 去读取文件,记得引入 jQuery . 例如,在<ArcGIS JS API :新增一个热力图 ...

  7. Install zabbix

    - name: Create dir to keep install file file: path=/opt/pacheage state=directory follow=yes force=ye ...

  8. echarts绘制彩虹色背景

    大致成品如图所示 关键的步骤: var dom = document.getElementById("myChart"); var myChart = echarts.init(d ...

  9. 18个awk的经典实战案例

    介绍 这些案例是我收集起来的,大多都是我自己遇到过的,有些比较经典,有些比较具有代表性. 这些awk案例我也录了相关视频的讲解awk 18个经典实战案例精讲,欢迎大家去瞅瞅. 插入几个新字段 在&qu ...

  10. Github上传大文件(超过100M)

    上传大文件(超过100M)到Github 笔者上传操作100M的文件到Github,结果在push的时候会自动终止.然后提示无法上传大文件,就算删除再提交也是报错. 于是,本人写这篇博客就是为了解决这 ...