【题目链接】 http://acm.hdu.edu.cn/showproblem.php?pid=6040

【题目大意】

  给出一个随机数生成器,有m个询问,问第bi小的元素是啥
  询问中对于bi<bk,bj<bk,有bi+bj<=bk

【题解】

  我们将所有的询问排序,我们发现倒着处理询问的时候询问区间大小下降非常快,
  nth_element(start,start+k,end) 可以近似O(n)查询区间中第k小的数字,
  并且在处理后保证比第k小小的数字均在其前面(虽然不一定有序),
  所以我们直接倒着处理调用nth_element即可。

【代码】

#include <cstdio>
#include <algorithm>
using namespace std;
int T,n,m,id[110],b[110];
unsigned s[10000010],a[110],x,y,z;
unsigned xorshf96(){
unsigned t;
x^=x<<16;
x^=x>>5;
x^=x<<1;
t=x; x=y; y=z;
z=t^x^y;
return z;
}
bool cmp(int x,int y){return b[x]<b[y];}
int main(){
int Cas=1;
while(~scanf("%d%d%u%u%u",&n,&m,&x,&y,&z)){
for(int i=0;i<m;i++){id[i]=i;scanf("%d",&b[i]);}
for(int i=0;i<n;i++)s[i]=xorshf96();
sort(id,id+m,cmp);
b[id[m]=m]=n;
for(int i=m-1;~i;i--){
if(b[id[i]]==b[id[i+1]]){
a[id[i]]=a[id[i+1]];
continue;
}
nth_element(s,s+b[id[i]],s+b[id[i+1]]);
a[id[i]]=s[b[id[i]]];
}printf("Case #%d: ",Cas++);
for(int i=0;i<m-1;i++)printf("%u ",a[i]);
printf("%u\n",a[m-1]);
}return 0;
}

HDU 6040 Hints of sd0061(nth_element)的更多相关文章

  1. hdu 6040 Hints of sd0061(stl: nth_element(arr,arr+k,arr+n))

    Hints of sd0061 Time Limit: 5000/2500 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others ...

  2. HDU 6040 Hints of sd0061(划分高低位查找)

    [题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=6040 [题目大意] 给出一个随机数生成器,有m个询问,问第bi小的元素是啥 询问中对于bi< ...

  3. HDU 6040 - Hints of sd0061 | 2017 Multi-University Training Contest 1

    /* HDU 6040 - Hints of sd0061 [ 第k小数查询,剪枝 ] 题意: 给出随机数列 a[N] (N < 1e7) 询问 b[M] (M < 100) ,对于每个询 ...

  4. HDU 6040 Hints of sd0061 nth_element函数

    Hints of sd0061 Problem Description sd0061, the legend of Beihang University ACM-ICPC Team, retired ...

  5. HDU 6040 Hints of sd0061 —— 2017 Multi-University Training 1

    Hints of sd0061 Time Limit: 5000/2500 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others ...

  6. HDU.2612 Find a way (BFS)

    HDU.2612 Find a way (BFS) 题意分析 圣诞节要到了,坤神和瑞瑞这对基佬想一起去召唤师大峡谷开开车.百度地图一下,发现周围的召唤师大峡谷还不少,这对基佬纠结着,该去哪一个...坤 ...

  7. HDU.1233 还是畅通工程(Prim)

    HDU.1233 还是畅通工程(Prim) 题意分析 首先给出n,代表村庄的个数 然后出n*(n-1)/2个信息,每个信息包括村庄的起点,终点,距离, 要求求出最小生成树的权值之和. 注意村庄的编号从 ...

  8. HDU 4635:Strongly connected(强连通)

    http://acm.hdu.edu.cn/showproblem.php?pid=4635 题意:给出n个点和m条边,问最多能添加几条边使得图不是一个强连通图.如果一开始强连通就-1.思路:把图分成 ...

  9. HDU 1222 Wolf and Rabbit(gcd)

    HDU 1222   Wolf and Rabbit   (最大公约数)解题报告 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid= ...

随机推荐

  1. Vuejs - 花式渲染目标元素

    Vue.js是什么 摘自官方文档: Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库 ...

  2. HTML语意化

    1.什么是HTML语义化? 根据内容的结构化(内容语义化),选择合适的标签(代码语义化)便于开发者阅读.写出更优雅的代码的同时让浏览器的爬虫和机器很好地解析.  2.为什么要语义化? 为了在没有CSS ...

  3. auth src

    https://github.com/jbeverly/pam_ssh_agent_auth https://github.com/aur-archive/pam-face-authenticatio ...

  4. 设计模式之笔记--单例模式(Singleton)

    单例模式(Singleton) 定义 单例模式(Singleton),保证一个类仅有一个实例,并提供一个访问它的全局访问点. 类图 描述 类Singleton的构造函数的修饰符为private,防止用 ...

  5. [New Learn] RunLoop学习-官方译文

    Run Loops Run loops是线程的一个基本构成部分.一个run loop 是一个事件处理循环,你可以使用它来处理线程收到的事件.设计run loop的目的就是可以使得线程在收到事件的时候处 ...

  6. C语言string转int

    再不用atoi函数接口时,将字符串型转换成整型. 例如:将字符串型“158”转换成整型158 int String2Int(char * buff) { ; ; '; index++) { value ...

  7. 内核添加USB模块

    Device Drivers->SCSI device support->SCSI disk support Device Drivers->USB support->Supp ...

  8. FineReport——JS二次开发(自定义翻页按钮)

    FR允许自定义工具栏上面的按钮,并提交JS方法: 对于翻页功能,大概有首页,下一页,上一页,最后一页,以及跳转页等功能. 不得不说的是,在HTML页面自定义的按钮如何获取到报表模板,通过FR提供的JS ...

  9. html5重力感应事件之DeviceMotionEvent

    前言 今天主要介绍一下html5重力感应事件之DeviceMotionEvent,之前我的一篇文章http://www.haorooms.com/post/jquery_jGestures, 介绍了第 ...

  10. php设计模式三-----建造者模式

    1.简介 意图:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示. 主要解决:主要解决在软件系统中,有时候面临着"一个复杂对象"的创建工作,其通常由各个部分的子 ...