当前位置:首页 > > 充电吧
[导读]士兵杀敌(三) 时间限制:2000 ms  |  内存限制:65535 KB 难度:5 描述南将军统率着N个士兵,士兵分别编号为1~N,南将军经常爱拿某一段编号内杀敌数最高的人与杀敌数最低的人

士兵杀敌(三) 时间限制:2000 ms  |  内存限制:65535 KB 难度:5 描述

南将军统率着N个士兵,士兵分别编号为1~N,南将军经常爱拿某一段编号内杀敌数最高的人与杀敌数最低的人进行比较,计算出两个人的杀敌数差值,用这种方法一方面能鼓舞杀敌数高的人,另一方面也算是批评杀敌数低的人,起到了很好的效果。

所以,南将军经常问军师小工第i号士兵到第j号士兵中,杀敌数最高的人与杀敌数最低的人之间军功差值是多少。

现在,请你写一个程序,帮小工回答南将军每次的询问吧。

注意,南将军可能询问很多次。

输入 只有一组测试数据
第一行是两个整数N,Q,其中N表示士兵的总数。Q表示南将军询问的次数。(1<N<=100000,1<Q<=1000000)
随后的一行有N个整数Vi(0<=Vi<100000000),分别表示每个人的杀敌数。
再之后的Q行,每行有两个正正数m,n,表示南将军询问的是第m号士兵到第n号士兵。 输出 对于每次询问,输出第m号士兵到第n号士兵之间所有士兵杀敌数的最大值与最小值的差。 样例输入

5 2
1 2 6 9 3
1 2
2 4

样例输出

1
7

来源 经典改编 上传者

张云聪



#include#include#includeusing namespace std;

const int N = 100010;
int maxsum[N][20], minsum[N][20];

void RMQ(int num) //预处理->O(nlogn)
{
	for(int j = 1; j < 20; ++j)
		for(int i = 1; i <= num; ++i)
			if(i + (1 << j) - 1 <= num)
			{
				maxsum[i][j] = max(maxsum[i][j - 1], maxsum[i + (1 << (j - 1))][j - 1]);
				minsum[i][j] = min(minsum[i][j - 1], minsum[i + (1 << (j - 1))][j - 1]);
			}
}

int main()
{
	int num, query;
	int src, des;
	scanf("%d %d", &num, &query);
		for(int i = 1; i <= num; ++i) //输入信息处理
		{
			scanf("%d", &maxsum[i][0]);
			minsum[i][0] = maxsum[i][0];
		}
		RMQ(num);
		while(query--) //O(1)查询
		{
			scanf("%d %d", &src, &des);
			int k = (int)(log(des - src + 1.0) / log(2.0));
			int maxres = max(maxsum[src][k], maxsum[des - (1 << k) + 1][k]);
			int minres = min(minsum[src][k], minsum[des - (1 << k) + 1][k]);
			printf("%dn", maxres - minres);
		}
	return 0;
}

对数函数log()默认以e为底  将 x 的自然对数值除以 n 的自然对数值,就可以对任意底 n 来计算数值 x 的对数值:
Logn(x) = Log(x) / Log(n)  换底公式


题目详解

RMQ算法

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

在工业控制系统中,Modbus RTU协议的CRC校验如同通信网络的"免疫系统",某石化厂DCS系统曾因CRC计算错误导致0.3%的数据包丢失,引发连锁控制故障。本文将深入解析CRC-16/MODBUS算法原理,对比软件...

关键字: Modbus RTU CRC 算法

加密算法分对称加密和非对称算法,其中对称加密算法的加密与解密密钥相同,非对称加密算法的加密密钥与解密密钥不同,此外,还有一类不需要密钥的散列算法。

关键字: 算法 嵌入式

在现代数字系统设计中,将算法高效地转化为 RTL(寄存器传输级)实现是 FPGA 工程师的核心任务之一。这一过程不仅需要对算法有深入理解,还需掌握 FPGA 的硬件特性和设计技巧。本文将详细介绍从算法到 RTL 实现的关...

关键字: 算法 寄存器传输级 数字系统

从本质上讲,算法是一种有条不紊、分步骤解决问题或完成任务的方法。无论是简单的数字相加公式,还是复杂的机器学习协议,算法都是软件应用的基础,确保任务能够高效有效地执行。

关键字: 算法 嵌入式

在自动驾驶技术的发展历程中,激光雷达(LiDAR)宛如一颗备受瞩目的新星,其独特的技术特性使其成为追求高安全性、高可靠性自动驾驶方案的首选。然而,这颗新星并非毫无争议,“价格昂贵、结构复杂、算法难度高” 等标签,也让一些...

关键字: 自动驾驶 激光雷达 算法

4月2日消息,近日,有关智能驾驶而引发的交通事故在网络上引起了大家的热烈讨论,对此,央视网评指出,“智能驾驶”,也请握紧方向盘。

关键字: 算法 智能驾驶

所谓排序算法,即通过特定的算法因式将一组或多组数据按照既定模式进行重新排序。这种新序列遵循着一定的规则,体现出一定的规律,因此,经处理后的数据便于筛选和计算,大大提高了计算效率。对于排序,我们首先要求其具有一定的稳定性,...

关键字: 排序算法 算法

快速排序通过一趟排序将待排序列分割成独立的两部分,其中一部分序列的关键字均比另一部分序列的关键字小,则可分别对这两部分序列继续进行排序,以达到整个序列有序的目的。

关键字: 快速排序 算法

算法,作为解决问题的精确描述,是描述策略机制的系统方法。让我们在周末轻松探讨五个具有深远影响的算法:Metropolis-Hastings算法、单纯形法、快速傅立叶变换、快速排序算法,以及计算特征值的QR算法。这些算法在...

关键字: 算法 快速排序算法

服务需要保护自己,以免被太多的请求淹没(无论是恶意或无意的),从而保持可用性。举个生活中的例子,某个景区,平时可能根本没什么人前往,但是一旦到了国庆假日就人满为患,这时景区管理人员就会实施一系列的限流举措,来限制进入的人...

关键字: 限流 算法
关闭