tyvj1297 小气的小B

描述

其实你们都不知道,小B是很小气的。一天小B带着他的弟弟小B‘一起去摘果子,走着走着,他们忽然发现了一颗长满了果子的树。由于弟弟长得太矮了,弟弟只有让哥哥小B帮他摘一些果子下来。哥哥小B说:"弟弟啊,不是我不想给你摘多,我只是一次拿不了那么多,昨天晚上又没睡好,只能上一次树。所以哥哥只能给你摘一个哈。"没办法,弟弟只有答应了这个要求。
于是几下小B就上了树,树上的果子还真多,有N个呢!!但是小B很快发现这些果子大小不一。抠门的小B就想给自己拿个最大的,给弟弟拿个最小的果子。但是由于树上有些果子太高,小B不一定可以够着,所以他给你选了P个可以够着的果子区间,让你在这些区间里面找一个最大的果子和一个最小的果子。

输入格式

共p+2行,
  第一行为n和p,
  第二行为区间[1,n]的果子大小(用正整数表示)
  后面p行形如a b,意为每次询问的区间的左界和右界

输出格式

共p行,第i行为第i次询问时得到的最大值以及最小值(一个询问用空格空开max和min)

【注意】在输入数据中果子的大小是无序的。

测试样例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;
}

  

时间: 2024-10-11 13:34:23

tyvj1297 小气的小B的相关文章

【警语】受得小气,则不至于受大气;吃得小亏,则不至于吃大亏

能够忍受小的欺凌,就不至于招惹更大的灾祸侮辱:面对一切微小的不公平待遇,或者利益分配有所冲突时,能够退让,不和人争蝇头小利,才不至于遭受更多损失. 我们在现实中很容易看到,无论是人与人之间.团体之间,甚至国家.种族之间,往往只是一句话的不和.一件极小的事情不能忍受,酿成许多惨剧,招来杀身之祸.牢狱之灾.财物重大损失.国家的动荡不安.教训惨痛,当事人往往后悔莫及. 面对别人的横加欺侮.障碍打击,乃至一切貌似不公正的处境,我们能够逆来顺受,不予计较,才能化解纠纷,消灾免难.这需要肚量,更需要智慧.首

Android 状态栏那些小坑?

背景:因为之前老板上次问我我们的app能不能自定义上面的状态栏我说可以啊!当时没管,今天试了下果然很多坑,之前github上也有很多大佬写了一个开源库有兴趣的可以点进去看下支持DrawLayout沉侵式[StatusBarUtil](https://github.com/laobie/StatusBarUtil)感觉好牛逼,像大佬敬礼,我毕竟是个小喽喽,我只能用最蠢的办法! 首先说下关于状态栏当系统版本为4.4或者4.4以上时可以使用沉浸式状态栏实现代码 其实状态栏这东西不是很难,就是通过添加一

分治法题目整理分析 找第k小的数/求逆序对数目/派

设计一个平均时间为O(n)的算法,在n(1<=n<=1000)个无序的整数中找出第k小的数. 提示:函数int partition(int a[],int left,int right)的功能是根据a[left]~a[right]中的某个元素x(如a[left])对a[left]~a[right]进行划分,划分后的x所在位置的左段全小于等于x,右段全大于等于x,同时利用x所在的位置还可以计算出x是这批数据按升非降序排列的第几个数.因此可以编制int find(int a[],int left,

微信小程序--图片相关问题合辑

图片上传相关文章 微信小程序多张图片上传功能 微信小程序开发(二)图片上传 微信小程序上传一或多张图片 微信小程序实现选择图片九宫格带预览 ETL:微信小程序之图片上传 微信小程序wx.previewImage预览图片 微信小程序之预览图片 小程序开发:上传图片到腾讯云 .NET开发微信小程序-上传图片到服务器 微信小程序本地图片处理--按屏幕尺寸插入图片 [微信小程序]上传图片到阿里云OSS Python Flask小程序文件(图片)上传技巧 小程序图片上传阿里OSS使用方法 微信小程序问题汇

微信小程序——豆瓣电影——(2):小程序运行部署

Demo 预览 演示视频(流量预警 2.64MB) GitHub Repo 地址 仓库地址:https://github.com/zce/weapp-demo 使用步骤 将仓库克隆到本地: bash $ git clone https://github.com/zce/weapp-demo.git weapp-douban --depth 1 $ cd weapp-douban 打开微信Web开放者工具(注意:必须是0.9.092300版本) 必须是0.9.092300版本,之前的版本不能保证正

微信小程序开发初探

一.关于微信小程序 1.1 小程序诞生的背景 张小龙说道: (1)一切以用户价值为依归→用户是微信的核心,所以微信中没有很多与客户无关的功能,比如QQ中的乱七八糟一系列东西. (2)让创造发挥价值→所有围绕微信的创造比如公众号都应该发挥其应有的价值. (3)用完即走的高效服务→这一点就厉害了word天,微信要打造一个以微信为中心的生态链,不以绑定用户为目标.比如生活中有一些不太常用的app,我们可能一年也使用不了几次,但是有时候就需要用到,微信就想要提供这样一个平台,让你可以在微信中使用这中所谓

微信小程序连接Tornado

自己搭建Tornado 监听8000端口, 提供给小程序访问的地址为http://127.0.0.1:8000/index #!/usr/bin/env python # -*- coding:utf-8 -*- import tornado.ioloop import tornado.web class MainHandler(tornado.web.RequestHandler): def get(self): print('GET方式请求成功') self.write("123"

【小程序】获取微信 自带的 收货地址获取和整理

1.wx.chooseAddress(OBJECT) if(wx.chooseAddress){ wx.chooseAddress({ success: function (res) { console.log(JSON.stringify(res)) }, fail: function(err){ console.log(JSON.stringify(err)) } }) }else{ console.log('当前微信版本不支持chooseAddress'); } 2.数据处理,仅供参考 /

微信小程序学习总结(2)------- 之for循环,绑定点击事件

最近公司有小程序的项目,本人有幸参与其中,一个项目做下来感觉受益匪浅,与大家做下分享,欢迎沟通交流互相学习. 先说一下此次项目本人体会较深的几个关键点:微信地图.用户静默授权.用户弹窗授权.微信充值等等. 言归正传,今天分享我遇到的关于wx:for循环绑定数据的一个tips:  1. 想必大家的都知道wx:for,如下就不用我啰嗦了: <view class="myNew" wx:for="{{list}}">{{item.title}}<view