tyvj1297 小气的小B
描述
于是几下小B就上了树,树上的果子还真多,有N个呢!!但是小B很快发现这些果子大小不一。抠门的小B就想给自己拿个最大的,给弟弟拿个最小的果子。但是由于树上有些果子太高,小B不一定可以够着,所以他给你选了P个可以够着的果子区间,让你在这些区间里面找一个最大的果子和一个最小的果子。
输入格式
第一行为n和p,
第二行为区间[1,n]的果子大小(用正整数表示)
后面p行形如a b,意为每次询问的区间的左界和右界
输出格式
【注意】在输入数据中果子的大小是无序的。
测试样例1
输入
5 2
1 3 2 4 5
1 4
2 5
输出
4 1
5 2
备注
保证果子大小不超过maxlongint
40%的数据:1<=n,p<=1,000
100%的数据:1<=n<=50,000
1<=p<=20,000
刷水了……裸的线段树维护最大最小值
#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
#include<queue>
#include<deque>
#include<set>
#include<map>
#include<ctime>
#define LL long long
#define inf 0x7ffffff
#define pa pair<int,int>
#define pi 3.1415926535897932384626433832795028841971
using namespace std;
inline LL read()
{
LL x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
return x*f;
}
struct segtree{
int l,r,mn,mx;
}tree[300000];
int n,m;
int a[50010];
inline void update(int k)
{
tree[k].mx=max(tree[k<<1].mx,tree[k<<1|1].mx);
tree[k].mn=min(tree[k<<1].mn,tree[k<<1|1].mn);
}
inline void buildtree(int k,int l,int r)
{
tree[k].l=l;tree[k].r=r;
if (l==r)
{
tree[k].mx=tree[k].mn=a[l];
return;
}
int mid=(l+r)>>1;
buildtree(k<<1,l,mid);
buildtree(k<<1|1,mid+1,r);
update(k);
}
inline int query(int k,int l,int r,int opr)
{
int x=tree[k].l,y=tree[k].r;
if (x==l&&y==r)
{
if (opr==1)return tree[k].mx;
if (opr==2)return tree[k].mn;
}
int mid=(x+y)>>1;
if (r<=mid)return query(k<<1,l,r,opr);
if (l>mid)return query(k<<1|1,l,r,opr);
if (opr==1)return max(query(k<<1,l,mid,opr),query(k<<1|1,mid+1,r,opr));
if (opr==2)return min(query(k<<1,l,mid,opr),query(k<<1|1,mid+1,r,opr));
}
int main()
{
n=read();m=read();
for(int i=1;i<=n;i++)a[i]=read();
buildtree(1,1,n);
for (int i=1;i<=m;i++)
{
int x=read(),y=read();
printf("%d %d\n",query(1,x,y,1),query(1,x,y,2));
}
return 0;
}
tyvj1297 小气的小B的更多相关文章
- 用MVC5+EF6+WebApi 做一个小功能(三) 项目搭建
		一般一个项目开始之前都会有启动会,需求交底等等,其中会有一个环节,大讲特讲项目的意义,然后取一个高大上的项目名字,咱这是一个小功能谈不上项目,但是名字不能太小气了.好吧,就叫Trump吧.没有任何含义 ... 
- [置顶]
        Android 状态栏那些小坑?
		背景:因为之前老板上次问我我们的app能不能自定义上面的状态栏我说可以啊!当时没管,今天试了下果然很多坑,之前github上也有很多大佬写了一个开源库有兴趣的可以点进去看下支持DrawLayout沉侵 ... 
- 【小程序分享篇 二 】web在线踢人小程序,维持用户只能在一个台电脑持登录状态
		最近离职了, 突然记起来还一个小功能没做, 想想也挺简单,留下代码和思路给同事做个参考. 换工作心里挺忐忑, 对未来也充满了憧憬与担忧.(虽然已是老人, 换了N次工作了,但每次心里都和忐忑). 写写代 ... 
- 【小程序分享篇 一 】开发了个JAVA小程序, 用于清除内存卡或者U盘里的垃圾文件非常有用
		有一种场景, 手机内存卡空间被用光了,但又不知道哪个文件占用了太大,一个个文件夹去找又太麻烦,所以我开发了个小程序把手机所有文件(包括路径下所有层次子文件夹下的文件)进行一个排序,这样你就可以找出哪个 ... 
- jQuery实践-网页版2048小游戏
		▓▓▓▓▓▓ 大致介绍 看了一个实现网页版2048小游戏的视频,觉得能做出自己以前喜欢玩的小游戏很有意思便自己动手试了试,真正的验证了这句话-不要以为你以为的就是你以为的,看视频时觉得看懂了,会写了, ... 
- 微信小程序开发心得
		微信小程序也已出来有一段时间了,最近写了几款微信小程序项目,今天来说说感受. 首先开发一款微信小程序,最主要的就是针对于公司来运营的,因为,在申请appid(微信小程序ID号)时候,需要填写相关的公司 ... 
- 前端网络、JavaScript优化以及开发小技巧
		一.网络优化 YSlow有23条规则,中文可以参考这里.这几十条规则最主要是在做消除或减少不必要的网络延迟,将需要传输的数据压缩至最少. 1)合并压缩CSS.JavaScript.图片,静态资源CDN ... 
- 微信应用号(小程序)开发IDE配置(第一篇)
		2016年9月22日凌晨,微信宣布“小程序”问世,当然只是开始内测了,微信公众平台对200个服务号发送了小程序内测邀请.那么什么是“小程序”呢,来看微信之父怎么说 看完之后,相信大家大概都有些明白了吧 ... 
- Chrome出了个小bug:论如何在Chrome下劫持原生只读对象
		Chrome出了个小bug:论如何在Chrome下劫持原生只读对象 概述 众所周知,虽然JavaScript是个很灵活的语言,浏览器里很多原生的方法都可以随意覆盖或者重写,比如alert.但是为了保证 ... 
随机推荐
- 戴着镣铐起舞——从logo设计说起
			一天中午走在路上,顺道去看了学校新媒体艺术与设计系的学生优秀作品展.看到一个logo设计时引发了我很大的兴趣,觉得设计的非常清新活泼,不过并没有拍下来,在这里不能贴图.但是logo设计大家应该都有所概 ... 
- 解决Jenkins上git出现的“ERROR: Error fetching remote repo 'origin'”问题
			今天对清掉了Jenkins中项目的工作空间,结果构建出现“ERROR: Error fetching remote repo 'origin'”问题:网上各种找也没找到解决这个问题的方法. 后来看错误 ... 
- IEEE论文格式要求
			0.特别提示:本次会议要求各位作者根据审稿意见进行认真修改,然后经过大会主席的检查合格才允许上传IEEE eXpress,主要的目的是为了保证论文集的质量,不让论文格式出现五花八门的情况,确保会议后被 ... 
- python3-day6(模块)
			一.OS模块 1.os.system('ls -l') #子shell运行,获取返回值,不是结果. 2.os.popen('ls -l').read() #获取结果. 二.sys模块 1.sys.ar ... 
- 算法导论——lec 11 动态规划及应用
			和分治法一样,动态规划也是通过组合子问题的解而解决整个问题的.分治法是指将问题划分为一个一个独立的子问题,递归地求解各个子问题然后合并子问题的解而得到原问题的解.与此不同,动态规划适用于子问题不是相互 ... 
- ngui点击与场景点击判断
			注:NGUI 组件上加上 BoxCollider 并设置区域大小 public void OnMouseDown() { if (UICamera.hoveredObject == null) ... 
- Builder模式 初体验
			看来Java构造器模式,决定动手体验下.构造器模式是什么?干什么用的?推荐大家看下ITEYE的一篇文章 http://www.iteye.com/topic/71175 了解构 ... 
- javaweb中去除某个get方式的参数,并且返回路径
			String requestURL = request.getRequestURL() + ""; // String queryString = request.getQuery ... 
- windows消息常量值
			WM_NULL = 0WM_CREATE = 1应用程序创建一个窗口WM_DESTROY = 2一个窗口被销毁WM_MOVE = 3移动一个窗口WM_SIZE = 5改变一个窗口的大小WM_ACTIV ... 
- 《第一行代码》学习笔记28-内容提供器Content Provider(1)
			1.内容提供器:用于在不同的应用程序之间实现数据共享的功能,提供了一套完整的机制,允许一个程序访问另一个程序中的数据,同时还能保证被访问 数据的安全性.使用内容提供器是Android实现跨程序共享数据 ... 
