士兵杀敌(三)(线段树)
来源:互联网 发布:德国pjur怎么样 知乎 编辑:程序博客网 时间:2024/06/18 10:02
点击打开链接
士兵杀敌(三)
时间限制: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
注意:要用C写
#include<stdio.h>//#include<algorithm>//using namespace std;#define INF 0x3f3f3f3fstruct tt{int l,r,sum,ma,mi;}t[300200];int e=-1,s=INF;void pushup(int o){t[o].sum=t[o*2].sum+t[o*2+1].sum;t[o].ma=t[o*2].ma>t[o*2+1].ma?t[o*2].ma:t[o*2+1].ma;t[o].mi=t[o*2].mi<t[o*2+1].mi?t[o*2].mi:t[o*2+1].mi;}void build(int o,int l,int r){t[o].l=l;t[o].r=r;if(l==r){int p;scanf("%d",&p); t[o].sum=t[o].mi=t[o].ma=p;return ;}int mid=(l+r)/2;build(o*2,l,mid);build(o*2+1,mid+1,r);pushup(o);} void find1(int o,int l,int r){if(l==t[o].l&&r==t[o].r){e=e>t[o].ma?e:t[o].ma;s=s<t[o].mi?s:t[o].mi;return ;}int mid=(t[o].l+t[o].r)/2;if(mid>=r)find1(o*2,l,r);else if(l>mid)find1(o*2+1,l,r);else{find1(o*2,l,mid);find1(o*2+1,mid+1,r);} }int main(){int n,m;while(scanf("%d%d",&n,&m)!=EOF){build(1,1,n);for(int i=0;i<m;i++){int a,b;scanf("%d%d",&a,&b); e=-1,s=INF; find1(1,a,b); printf("%d\n",e-s);}}return 0;}
阅读全文
0 0
- 士兵杀敌(三)(线段树)
- 士兵杀敌(三)(线段树)
- NYOJ119 士兵杀敌(三)【线段树】
- NYOJ119 士兵杀敌(三) 线段树
- 【nyoj119】士兵杀敌三(线段树)
- nyoj119 士兵杀敌(三) (线段树,两个value)
- NYOJ-119-士兵杀敌(三)(线段树)
- 【nyoj】-116-士兵杀敌(三)(线段树,变化)
- nyoj119 士兵杀敌(三)(线段树||RMQ)
- NYOJ 士兵杀敌(三)(线段树,树状数组)
- 【南阳OJ119】士兵杀敌(三)(线段树)
- nyoj119-士兵杀敌(三)(线段树,最大最小值)
- nyoj 119 士兵杀敌(三) 【线段树】【单点更新】
- nyoj119 士兵杀敌(三) ST算法和线段树
- nyoj-119 士兵杀敌(三) 线段树
- 士兵杀敌(三) 【nyoj-119】【线段树】
- nyoj-119-士兵杀敌(三)【线段树】
- nyoj 119 士兵杀敌(三)线段树
- 南理 奇偶数分离
- 问题 B: 黑色星期五
- Drying
- 《剑指offer》牛客网java题解
- PHP对程序员的要求更高
- 士兵杀敌(三)(线段树)
- 网易2018校招编程题集合3
- Linux下搭建 NFS
- 基于Cesium剖面分析功能的实现
- 无向图的遍历(BFS+DFS,MATLAB)
- LVM(逻辑卷管理)
- 欢迎使用CSDN-markdown编辑器
- 字符串反转
- 问题 F: 拦截导弹