当前位置: 首页 > news >正文

【BZOJ】1699 [Usaco2007 Jan]Balanced Lineup排队

【算法】线段树

#include<cstdio>
#include<cctype>
#include<algorithm>
using namespace std;
const int inf=0x3f3f3f3f,maxn=50010;
struct tree{int l,r,mins,maxs;}t[maxn*3];
int n,q,a[maxn];
int read_t;char c;
int read()
{
    read_t=0;
    while(!isdigit(c=getchar()));
    do{read_t=read_t*10+c-'0';}while(isdigit(c=getchar()));
    return read_t;
}
void build(int k,int l,int r)
{
    t[k].l=l;t[k].r=r;
    if(l==r)t[k].mins=a[l],t[k].maxs=a[r];
     else
      {
          int mid=(l+r)>>1;
          build(k<<1,l,mid);
          build(k<<1|1,mid+1,r);
          t[k].mins=min(t[k<<1].mins,t[k<<1|1].mins);
          t[k].maxs=max(t[k<<1].maxs,t[k<<1|1].maxs);
      }
}
int askmaxs(int k,int l,int r)
{
    int left=t[k].l,right=t[k].r;
    if(l<=left&&r>=right)return t[k].maxs;
     else
      {
          int mid=(left+right)>>1,ans=0;
          if(l<=mid)ans=askmaxs(k<<1,l,r);
          if(r>mid)ans=max(ans,askmaxs(k<<1|1,l,r));
          return ans;
      }
}
int askmins(int k,int l,int r)
{
    int left=t[k].l,right=t[k].r;
    if(l<=left&&r>=right)return t[k].mins;
     else
      {
          int mid=(left+right)>>1,ans=inf;
          if(l<=mid)ans=askmins(k<<1,l,r);
          if(r>mid)ans=min(ans,askmins(k<<1|1,l,r));
          return ans;
      }
}
int main()
{
    n=read();q=read();
    for(int i=1;i<=n;i++)a[i]=read();
    build(1,1,n);
    for(int i=1;i<=q;i++)
     {
         int u=read(),v=read();
         printf("%d\n",askmaxs(1,u,v)-askmins(1,u,v));
     }
    return 0;
}
View Code

 

转载于:https://www.cnblogs.com/onioncyc/p/6200595.html

相关文章:

  • Django 注册信息相关 与外键跨表查询
  • MathType输入框怎么调整
  • 彻底理解推送
  • CentOS7.2编译安装LNMP
  • 如何写3DMAX的插件
  • Centos7上安装tomcat
  • 论车牌识别与电子警察关系
  • hbase通过row key 的前缀查询记录
  • 《轻量级Java Web整合开发入门SSH》 - 快速理解Java框架的又一积木
  • PHP课程总结20161222
  • 画虚线
  • SFB 项目经验-09-用Lync 2013或Skype for Business 2015抢火车票
  • SEO优化---学会建立高转化率的网站关键词库
  • ★平衡法则在生活中的应用
  • (十五)使用Nexus创建Maven私服
  • JS 中的深拷贝与浅拷贝
  • 【css3】浏览器内核及其兼容性
  • CSS实用技巧
  • Netty源码解析1-Buffer
  • PHP变量
  • React Transition Group -- Transition 组件
  • Sass 快速入门教程
  • Spark RDD学习: aggregate函数
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • 安卓应用性能调试和优化经验分享
  • 规范化安全开发 KOA 手脚架
  • 汉诺塔算法
  • 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的?
  • 两列自适应布局方案整理
  • 收藏好这篇,别再只说“数据劫持”了
  • 自制字幕遮挡器
  • 摩拜创始人胡玮炜也彻底离开了,共享单车行业还有未来吗? ...
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • ​什么是bug?bug的源头在哪里?
  • ​虚拟化系列介绍(十)
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • (牛客腾讯思维编程题)编码编码分组打印下标题目分析
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (转)Groupon前传:从10个月的失败作品修改,1个月找到成功
  • (转)负载均衡,回话保持,cookie
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • .NET C#版本和.NET版本以及VS版本的对应关系
  • .NET Framework 的 bug?try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃
  • .NET/C# 使窗口永不获得焦点
  • [ web基础篇 ] Burp Suite 爆破 Basic 认证密码
  • [3D游戏开发实践] Cocos Cyberpunk 源码解读-高中低端机性能适配策略
  • [ai笔记9] openAI Sora技术文档引用文献汇总
  • [Android] Android ActivityManager
  • [BZOJ3757] 苹果树
  • [CTO札记]如何测试用户接受度?
  • [dfs] 图案计数
  • [Go WebSocket] 多房间的聊天室(三)自动清理无人房间
  • [Grafana]ES数据源Alert告警发送