题目地址:https://www.luogu.org/problem/P1801

题目


Black Box是一种原始的数据库。它可以储存一个整数数组,还有一个特别的变量i。最开始的时候Black Box是空的.而i等于0。这个Black Box要处理一串命令。

命令只有两种:

ADD(x):把x元素放进BlackBox;

GET:i加1,然后输出Blackhox中第i小的数。

记住:第i小的数,就是Black Box里的数的按从小到大的顺序排序后的第i个元素。例如:

我们来演示一下一个有11个命令的命令串。(如下图所示)

现在要求找出对于给定的命令串的最好的处理方法。ADD和GET命令分别最多200000个。现在用两个整数数组来表示命令串:

1.A(1),A(2),…A(M):一串将要被放进Black Box的元素。每个数都是绝对值不超过2000000000的整数,M$200000。例如上面的例子就是A=(3,1,一4,2,8,-1000,2)。

2.u(1),u(2),…u(N):表示第u(j)个元素被放进了Black Box里后就出现一个GET命令。例如上面的例子中u=(l,2,6,6)。输入数据不用判错。

输入格式

第一行,两个整数,M,N。

第二行,M个整数,表示A(l)……A(M)。

第三行,N个整数,表示u(l)…u(N)。

输出格式

输出Black Box根据命令串所得出的输出串,一个数字一行。

输入输出样例

说明/提示

对于30%的数据,M≤10000;

对于50%的数据,M≤100000:

对于100%的数据,M≤200000。

ac代码:


#include <bits/stdc++.h>
using namespace std;
const int maxn = 4*200005;
int a[maxn], b[maxn], cnt[maxn], u[maxn];
int q, m, n;;
void update(int id )
{cnt[id] = cnt[id << 1] + cnt[id << 1 | 1];
}
void build(int l, int r, int id, int no)
{if(l == r){cnt[id]++;return ;}int mid = (l + r) >> 1;if(no <= mid) build(l, mid, id << 1, no);// 单点else build(mid + 1, r, id << 1 | 1, no);update(id);
}
int query(int l, int r, int id, int k)
{if(l == r)return l; //返回1-n的第k大的数是去重之后的第几大数int mid = (l + r) >> 1;if(k <= cnt[id << 1]) return  query(l, mid, id << 1, k);else return  query(mid + 1, r, id << 1 | 1, k - cnt[id << 1]);//!k - cnt[id << 1]
}
int main()
{//freopen("/Users/zhangkanqi/Desktop/11.txt","r",stdin);scanf("%d %d", &m, &n);for(int i = 1; i <= m; i++){scanf("%d", &a[i]);b[i] = a[i];}for(int i = 1; i <= n; i++)scanf("%d", &u[i]);sort(a+1, a+1+m);int num = unique(a+1, a+1+m) - (a+1);for(int i = 1; i <= n; i++){for(int j = u[i - 1] + 1; j <= u[i]; j++){int no = lower_bound(a+1, a+1+num, b[j]) - a;build(1, num, 1, no);}int id = query(1, num, 1, ++q);printf("%d\n", a[id]);}return 0;
}

【洛谷P1801】黑匣子_NOI导刊2010提高(06)(权值线段树裸题+模拟)相关推荐

  1. P1801 黑匣子_NOI导刊2010提高(06)

    P1801 黑匣子_NOI导刊2010提高(06) 题目描述 Black Box是一种原始的数据库.它可以储存一个整数数组,还有一个特别的变量i.最开始的时候Black Box是空的.而i等于0.这个 ...

  2. 洛谷 P1767 家族_NOI导刊2010普及(10)

    P1767 家族_NOI导刊2010普及(10) 题目描述 在一个与世隔绝的岛屿上,有一个有趣的现象:同一个家族的人家总是相邻的(这里的相邻是指东南西北四个方向),不同的家族之间总会有河流或是山丘隔绝 ...

  3. 题解【黑匣子_NOI导刊2010提高(06)】(洛谷P1801)

    题目大意 给出一个长度为\(M\)序列\(A\),表示第\(i\)回合将\(A_i\)放入一个箱子中(共有\(M\)回合),再给出一个长度为\(N\)序列\(B\),表示在\(B_i\)回合执行一次\ ...

  4. 洛谷——P1951 收费站_NOI导刊2009提高(2)

    https://www.luogu.org/problem/show?pid=1951 题目描述 在某个遥远的国家里,有n个城市.编号为1,2,3,-,n. 这个国家的政府修建了m条双向的公路.每条公 ...

  5. [洛谷P1951]收费站_NOI导刊2009提高(2)

    题目大意:有一张$n$个点$m$条边的图,每个点有一个权值$w_i$,有边权,询问从$S$到$T$的路径中,边权和小于$s$,且$\max\limits_{路径经过k}\{w_i\}$最小,输出这个最 ...

  6. 洛谷P1807 最长路_NOI导刊2010提高(07) 求有向无环图的 最长路 图论

    洛谷P1807 最长路_NOI导刊2010提高(07) 图论 求有向无环图的 最长路 首先阐明一点 最长路dijkstra 是不能做 (当然我是不会做的,不过我貌似看到过网上的dalao有用dijst ...

  7. 洛谷 P1795 无穷的序列_NOI导刊2010提高(05)

    P1795 无穷的序列_NOI导刊2010提高(05) 题目描述 有一个无穷序列如下: 110100100010000100000- 请你找出这个无穷序列中指定位置上的数字 输入输出格式 输入格式: ...

  8. 洛谷 P1796 汤姆斯的天堂梦_NOI导刊2010提高(05)

    P1796 汤姆斯的天堂梦_NOI导刊2010提高(05) 题目描述 汤姆斯生活在一个等级为0的星球上.那里的环境极其恶劣,每天12小时的工作和成堆的垃圾让人忍无可忍.他向往着等级为N的星球上天堂般的 ...

  9. 洛谷——P1775 古代人的难题_NOI导刊2010提高(02) P1936 水晶灯火灵(斐波那契数列)...

    P1775 古代人的难题_NOI导刊2010提高(02) P1936 水晶灯火灵 斐波那契数列 1.x,y∈[1-k],且x,y,k∈Z 2.(x^2-xy-y^2)^2=1 给你一个整数k,求一组满 ...

  10. 洛谷—— P1775 古代人的难题_NOI导刊2010提高(02)

    P1775 古代人的难题_NOI导刊2010提高(02) 题目描述 门打开了,里面果然是个很大的厅堂.但可惜厅堂内除了中央的一张羊皮纸和一支精致的石笔,周围几具骷髅外什么也没有.难道这就是王室的遗产? ...

最新文章

  1. 在Linux 5/6上使用UDEV SCSI规则配置ASM DISK
  2. MassTransit中RequestResponse基本使用
  3. NSHashTable and NSMapTable
  4. java 执行机制_Java类的执行机制
  5. 【Flink】RuntimeException: Row arity of from does not match serializers
  6. oracle的游标的属性,Oracle 游标属性
  7. java rt.jar的源代码的位置
  8. python2.7换行输出多个变量
  9. Windows Server 2012 R2 安装密钥
  10. 12306UserScript
  11. 概率论05 - 随机变量及其分布函数
  12. API Design for ios 译文
  13. 计算机电源插座安装,弱电箱的插座要怎么安装 弱电箱安装插座安装方法介绍【详解】...
  14. repo sync error.GitError: manifests rev-list : fatal: revision walk setup failed
  15. 日语学习之——五十音图及单词(2)
  16. Word如何插入图片?最全方法总结(2023新版)
  17. php中上传图片的大小,php如何修改上传图片大小
  18. 怎么生成a类型的对象 java_用一个 java 程序! 写一个类A, 该类创建的对象可以调用方法f输出英文字母表,然后再编写...
  19. No qualifying bean of type found for dependency: expected at least 1 bean which qualifies as autowir
  20. 你的态度,你的旅途风景

热门文章

  1. jQuery学习整理 (3) 使用jQuery操作元素的属性与样式
  2. 蓝桥杯 前缀判断——2013年省赛C/C++A组真题5
  3. generator.xml mysql_generatorConfig-mysql.xml中连接数据库的正确书写方式。
  4. percona mysql 编译参数_Linux 下编译安装 MySQL(Percona Server) 5.6
  5. 解构给默认值_使用 JavaScript 解构让代码更优雅
  6. 找不到列 dbo 或用户定义的函数或聚合_Power BI 的大数据处理方案:聚合
  7. VideoView播放视频会引起其它音乐播放器暂停问题解决
  8. 痛与快乐有一个代码是什么_痛与快乐有一个代码是什么_痛苦与快乐
  9. [转]余弦cos计算相似度
  10. vue-cli3+element-ui+vuex+nodejs+mysql前端项目记录