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. 【Java】面向对象初探

    前段时间经历了一段心态浮躁期,这让我想起了自己最初的计划,要提升自己知识体系的广度.前几年一直做的是web前端这一块的工作,但我希望通过自己在学习Java这样的过程来提升自己的知识广度. 面向对象概述 ...

  2. Linux入门之简介

    1.啥是linux? Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和Unix的多用户.多任务.支持多线程和多CPU的操作系统. 它能运行主要的Unix工具软件.应用程序 ...

  3. Sequelize小记

    http://docs.sequelizejs.com/   官方英文 Object-Relational Mapping 增 Model.create({field1:'a', field2:'b' ...

  4. 0xe7f001f0!?NDK调试过程,无故抛出SIGSEGV。

    arm调试过程,如果抛一个SIGSEGV,地址在 0xe7f001f0 附近,原因居然是因为我在调试.当我使用n指令跳到下一行代码时,往往变成了continue指令一样地执行.还不确定地抛出SIGSE ...

  5. 一 linuk系统简介

    开源软件 使用的自由,绝大多数开源软件免费 研究的自由,可以获得软件源代码 散播及改良的自由,可以自由传播 改良甚至销售 linuk应用领域 基于linuk的企业服务器 扫描踩点网站www.netcr ...

  6. Chocolatey初体验

    新电脑安装Nodejs时发现安装包提示是否自动安装Chocolatey,之前没看到过这个名词,于是搜索了下,发现Chocolatey是Windows平台的包管理工具,类似于Linux的yum/apt- ...

  7. caffe网络在多线程中无法使用GPU的解决方案 | cpp caffe net run in multiple threads

    本文首发于个人博客https://kezunlin.me/post/8d877e63/,欢迎阅读! cpp caffe net run in multiple threads Guide set_mo ...

  8. PowerMock学习(六)之Mock Final的使用

    Mock Final mockfinal相对来说就比较简单了,使用powermock来测试使用final修饰的method或class,比较简单,接口调用部分,还是service调用dao. 对于接口 ...

  9. C#音频截取与原文匹配

    1.需求 上传一个音频文件(例如英语听力的音频)与音频对应的原文word文档.大概估算音频中一段对话到另一端对话的时间间隔,将音频截取为不同对话的小音频文件,通过百度语音识别转换成英文,然后与原文对比 ...

  10. java struts2 debug

    出了一堆bug 改的顺序和哪个起了作用不太记得了 下面列出遇到问题的顺序:1java.lang.NoSuchMethodException:没这个方法 代码是改正后的,出错的时候保证class ,ac ...