hdu6040

题意

将一个函数运行 n 次,一共得到 n 个值,有 m 次询问,每次询问第 k 小的值。

分析

考察了 \(nth\_element\) 函数的运用。\(nth\_element(a, a + x, a + n)\) 使得 ( \(a\) 数组下标范围 \([0, n)\) ) \(a[x]\) 存的是第 \(x\) 小的数,且保证 \(x\) 左边的数小于等于它,右边的数大于等于它( 当 \(x = 0\) 时, \(a[0]\) 是最小的值 )。

将 \(k\) 排序后从大到小,求值,并更新 \(n\) 的值,因为右边的数一定大于等于左边的数,剩下第 k 小的取值一定能在左边取到。

code

#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<iostream>
using namespace std;
typedef long long ll;
const int MAXN = 1e7 + 10;
int kase = 1;
int n, m;
unsigned A, B, C;
unsigned x, y, z;
unsigned rng61() {
unsigned t;
x ^= x << 16;
x ^= x >> 5;
x ^= x << 1;
t = x;
x = y;
y = z;
z = t ^ x ^ y;
return z;
}
unsigned a[MAXN];
struct B {
int x, i;
bool operator<(const B&other) const {
return x > other.x;
}
}b[105];
unsigned ans[105];
int main() {
while(~scanf("%d%d%u%u%u", &n, &m, &A, &B, &C)) {
x = A; y = B; z = C;
for(int i = 0; i < n; i++) {
a[i] = rng61();
}
for(int i = 0; i < m; i++) {
scanf("%d", &b[i].x);
b[i].i = i;
}
sort(b, b + m);
int len = n;
for(int j = 0; j < m; j++) {
if(j && b[j].x == b[j - 1].x) {
ans[b[j].i] = ans[b[j - 1].i];
continue;
}
nth_element(a, a + b[j].x, a + len);
ans[b[j].i] = a[b[j].x];
len = b[j].x;
}
printf("Case #%d:", kase++);
for(int i = 0; i < m; i++) {
printf(" %u", ans[i]);
}
printf("\n");
}
return 0;
}

hdu6040的更多相关文章

  1. HDU6040 Hints of sd0061

    题目链接:https://vjudge.net/problem/HDU-6040 题目大意: 给出 \(n\) 个数,有 \(m\) 次询问,每次询问这 \(n\) 个数中第 \(k+1\) 大的数是 ...

  2. 2017 Multi-University Training Contest - Team 1—HDU6040

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6040 题意:不知道北航的同学为何解释题意之前都要想一段故事,导致刚开始题意不是很懂,题意就是给你n,m ...

  3. 随机生成数组函数+nth-element函数

    这几天做了几道随机生成数组的题,且需要用nth-elemeng函数,并且都是北航出的多校题…… 首先我们先贴一下随机生成数组函数的代码: unsigned x = A, y = B, z = C; u ...

  4. O(n)线性时间求解第k大-HDU6040-CSU2078

    目录 目录 思路 (有任何问题欢迎留言或私聊 && 欢迎交流讨论哦 目录 HDU6040:传送门  \(m(m\leq 100)\)次查询长度为\(n(n \leq 1e7)\)区间的 ...

随机推荐

  1. 【Radial Basis Function Network】林轩田机器学习技法

    这节课主要讲述了RBF这类的神经网络+Kmeans聚类算法,以及二者的结合使用. 首先回归的了Gaussian SVM这个模型: 其中的Gaussian kernel又叫做Radial Basis F ...

  2. jmeter运行脚本后,请求偶发性的传参错误

    问题现象:jmeter写好脚本后,请求偶发性的传参错误 排查过程:1.结合报错返回值,看是不是线程并发引起: 2.排除线程并发引起后,看看是不是取值策略:如果是参数化,看看是不是每次迭代,每次都取唯一 ...

  3. 爬虫:Scrapy7 - Scrapy终端(Scrapy shell)

    Scrapy 终端是一个交互终端,可以在未启动 spider 的情况下尝试及调试你的爬取代码.其本意是用来测试提取数据的代码,不过可以将其作为正常的 Python 终端,在上面测试任何 Python ...

  4. 软件工程概论课堂测试一————添加新课程(web)

    设计思想 三个文件Class_add.java  add.jsp  addInput.jsp Class_add.java : 内封装方法:连接数据库.向数据库添加课程信息.判断非合理的输入情况.判断 ...

  5. java链接数据库--Mysql

    /************************************************************************* > File Name: Mysql.jav ...

  6. java 复习整理(四 String类详解)

    String 类详解   StringBuilder与StringBuffer的功能基本相同,不同之处在于StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此效率上S ...

  7. POST JSON fails with 415 Unsupported media type, SpringMVC

    网上的解决办法非常多,但是大多不靠谱. 归结原因:SpringMVC 无法通过 httprequest headers 中的 Content-Type 和 Accept 匹配到对应的HttpMessa ...

  8. xshell设置使用

    一.首先您的xshell先连接上需要远程连接的服务器. 二.打开连接,出现下记页面,就证明与服务器连接正常了. 三.接下来,我们就可以使用命令做一系列操作了. 3-1:cd 是进入下一级目录命令 例如 ...

  9. AngularJS 作用域与数据绑定机制

    AngularJS 简介 AngularJS 是由 Google 发起的一款开源的前端 MVC 脚本框架,既适合做普通 WEB 应用也可以做 SPA(单页面应用,所有的用户操作都在一个页面中完成).与 ...

  10. artTemplate 动态加载模版

    问题 之前项目中一直有用到artDialog对话框组件,作者后期又发布了js模版引擎,使用过几次,效果感觉还挺好.当自己想把模版放在html之外时,遇到了一点问题. 作者介绍的方式,是在js文件中,通 ...