nyoj 119 士兵杀敌(三) <模板RMQ--静态数组时求最大最小值>
来源:互联网 发布:知乎类似洛丽塔小说 编辑:程序博客网 时间:2024/06/05 17:56
士兵杀敌(三)
时间限制: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 21 2 6 9 31 22 4
- 样例输出
17
- 来源
- 经典改编
- 上传者
- 张云聪
代码:
#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;#define LL long long#define MIM 101000int MA[MIM][50],MI[MIM][50];int shu[MIM];int main(){ int n,m; scanf("%d%d",&n,&m); for (int i=1;i<=n;i++) { scanf("%d",&shu[i]); MA[i][0]=MI[i][0]=shu[i]; } int p=log2(n); for (int i=1;i<=p;i++) for (int j=1;j-1+(1<<i)<=n;j++) { MA[j][i]=max(MA[j][i-1],MA[j+(1<<(i-1))][i-1]); MI[j][i]=min(MI[j][i-1],MI[j+(1<<(i-1))][i-1]); } int x,y,a,b; for (int i=0;i<m;i++) { scanf("%d%d",&x,&y); int p=log2(y+1-x); // printf("%d ppppp\n",p); a=max(MA[x][p],MA[y+1-(1<<p)][p]); b=min(MI[x][p],MI[y+1-(1<<p)][p]); printf("%d\n",a-b); } return 0;}
0 0
- nyoj 119 士兵杀敌(三) <模板RMQ--静态数组时求最大最小值>
- NYOJ 119 士兵杀敌(三)【RMQ】
- nyoj--119 士兵杀敌(三)(RMQ)
- 【RMQ】nyoj-119 士兵杀敌(三)
- NYOJ-士兵杀敌(三) 线段树RMQ算法求区间的最大差值
- NYOJ-119 士兵杀敌(三 。 rmq
- nyoj 119 士兵杀敌三(RMQ)
- NYOJ-119 士兵杀敌(三) (RMQ)
- NYOJ - 士兵杀敌(三)(RMQ)
- NYOJ 119 士兵杀敌(三)(线段树—求区间最大值与最小值差)
- [NYOJ 119] 士兵杀敌(三) (RMQ ST算法)
- NYOJ 119 士兵杀敌(三)(RMQ算法)
- NYOJ 题目119士兵杀敌(三)(RMQ)
- NYOJ 119 士兵杀敌(三)(RMQ)
- NYOJ-119-士兵杀敌(三)(RMQ)
- NYOJ 119 士兵杀敌(三) (RMQ ST算法)
- nyoj 119 士兵杀敌(三)(RMQ)
- NYOJ 119士兵杀敌(三)(RMQ)
- HDU 1215 七夕节
- Android混淆心得
- SDUT2118数据结构实验之链表三:链表的逆置
- android studio listview控件基础 代码
- tomcat设置默认项目
- nyoj 119 士兵杀敌(三) <模板RMQ--静态数组时求最大最小值>
- hdu4081 Qin Shi Huang's National Road System(次小生成树)
- 步态识别综述(一)
- 文件压缩
- Timus 1052 Rabbit Hunt
- 电感标识喷码机
- S60在使用底座授权的时候,清除puk
- hdu2063 过山车(二分图最大匹配基础)
- centos下安装JDK8的方法