当前位置: 首页 > news >正文

HDU-6040 Hints of sd0061 - 2017 Multi-University Training Contest - Team 1(快排思想STL应用)

题意:给N个数字,M次查询,第i次查询问A数组中第B[i]小的数是多少。

思路:考察了快排的思想,STL的使用。

nth_element(A, A+K, A+N)

表示在数组A的[0, N-1]中找到第K小的(K从0开始算)并放在第K个位置,并且前K-1(共K个)个位置均为小于A[K]的数。复杂度将近线性。

nth_element(A+Q, A+K, A+N)

则表示从[A+Q, A+N-1]中找第K-Q(K-Q从0开始算)小的并放在第K个位置。

注意到在找到第K小的时候,前K-1个数均是小于A[K]的,这样我们从大往小枚举寻找,可以减少搜索量。


代码:

#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e7+5;
struct node
{
	unsigned val, id;
	bool operator<(const node k)const
	{
		return val > k.val;
	}
} B[105];
unsigned A[maxn], ans[105];
unsigned N, M, _A, _B, _C, K, UP;
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;
}
int main()
{
	int count = 0;
	while(~scanf("%u %u %u %u %u", &N, &M, &_A, &_B, &_C))
	{
		x = _A, y = _B, z = _C;
		for(int i = 1; i <= M; ++i)
		{
			 scanf("%u", &B[i].val);
			 B[i].id = i;
		}
		for(int i = 1; i <= N; ++i) A[i] = rng61();
		sort(B+1, B+M+1); UP = N+1;
		//nth_element(A, A + k, A+n)
		for(int i = 1; i <= M; ++i)
		{
			K = B[i].val+1;
			nth_element(A+1, A+K, A+UP);
			UP = K; ans[B[i].id] = A[K];
		}
		printf("Case #%d:", ++count);
		for(int i = 1; i <= M; ++i) printf(" %u", ans[i]);
		puts("");
	}
	return 0;
}


继续加油~

相关文章:

  • 操作系统内存配置overcommit_memory
  • HDU-1045 Fire Net(简单缩点+最大匹配)
  • python 文件与目录的操作   未完善 需要重新学习
  • LightOJ-1296 Again Stone Game(SG打表找规律)
  • ejb3中的@Schedule中的persistent属性的深入探索
  • HDU-2389 Rain on your Parade(二分图之Hopcroft-Karp算法)
  • javascript实现 color颜色格式转换【 rgb和十六进制的转换】
  • HDU-4686 Arc of Dream(推公式+矩阵快速幂)
  • python之测试
  • Codeforces-557D Vitaly and Cycle(二分图染色)
  • POJ-1019 Number Sequence(思维题)
  • 【吾日三省吾身】2015.6.13-涅槃行动第二十六天
  • Codeforces Round #427 (Div. 2)-C. Star sky(二维前缀和)
  • sequioadb源码分析2
  • HDU-6058 Kanade's sum - 2017 Multi-University Training Contest - Team 3(思维+模拟链表)
  • 【技术性】Search知识
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • Apache Pulsar 2.1 重磅发布
  • bootstrap创建登录注册页面
  • classpath对获取配置文件的影响
  • Cumulo 的 ClojureScript 模块已经成型
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • js中forEach回调同异步问题
  • LeetCode算法系列_0891_子序列宽度之和
  • SpiderData 2019年2月13日 DApp数据排行榜
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 极限编程 (Extreme Programming) - 发布计划 (Release Planning)
  • 计算机常识 - 收藏集 - 掘金
  • ------- 计算机网络基础
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 使用 @font-face
  • 王永庆:技术创新改变教育未来
  • 怎样选择前端框架
  • 智能合约开发环境搭建及Hello World合约
  • 自动记录MySQL慢查询快照脚本
  • elasticsearch-head插件安装
  • ​比特币大跌的 2 个原因
  • !!Dom4j 学习笔记
  • #NOIP 2014#Day.2 T3 解方程
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • (1)SpringCloud 整合Python
  • (2)STM32单片机上位机
  • (二)【Jmeter】专栏实战项目靶场drupal部署
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (幽默漫画)有个程序员老公,是怎样的体验?
  • .htaccess配置重写url引擎
  • .NET Core 成都线下面基会拉开序幕
  • .net企业级架构实战之7——Spring.net整合Asp.net mvc
  • .NET设计模式(11):组合模式(Composite Pattern)
  • .NET实现之(自动更新)
  • .net与java建立WebService再互相调用
  • @vue/cli 3.x+引入jQuery