欢迎访问~原文出处——博客园-zhouzhendong

去博客园看该题解


题目传送门 - BZOJ1067


题意概括

给定n组整数对(Xi,Yi),当Xi<Xj且Yi>=Yj时,如果对于任意的Xk,有Xi<Xk<Xj, Yk严格小于Yj,则称Xi是Xi到Xj中最牛的点。例如4个整数对(2002,4920),(2003,5901),(2004,2832),(2005,3890),则可以说“2003”是2003至2005中最牛的点,但不能说是2002至2005中最牛的点。由于有些X坐标是未知的,有的说法是可能正确也可能不正确。


题解

  这题要分情况讨论;

  情况特别多。

  详见代码。

  因为要查询,所以用一棵线段树来维护区间最值。


代码

#include <cstring>
#include <algorithm>
#include <cstdio>
#include <cstdlib>
#include <cmath>
using namespace std;
const int N=+;
int n,m,t[N*];
struct Point{
int x,y;
}P[N];
void build(int rt,int le,int ri){
if (le==ri){
t[rt]=P[le].y;
return;
}
int mid=(le+ri)>>,ls=rt<<,rs=ls|;
build(ls,le,mid);
build(rs,mid+,ri);
t[rt]=max(t[ls],t[rs]);
}
int findR(int x){
int le=,ri=n,mid,ans=;
while (le<=ri){
mid=(le+ri)>>;
if (P[mid].x==x)
return mid;
if (P[mid].x<x)
le=mid+,ans=mid;
if (P[mid].x>x)
ri=mid-;
}
return ans+;
}
int query(int rt,int le,int ri,int xle,int xri){
if (xle>xri)
return -;
if (ri<xle||le>xri)
return -;
if (xle<=le&&ri<=xri)
return t[rt];
int mid=(le+ri)>>;
return max(query(rt<<,le,mid,xle,xri),query(rt<<|,mid+,ri,xle,xri));
}
int main(){
scanf("%d",&n);
for (int i=;i<=n;i++)
scanf("%d%d",&P[i].x,&P[i].y);
build(,,n);
scanf("%d",&m);
for (int i=;i<=m;i++){
int xa,xb,fa,fb;
scanf("%d%d",&xa,&xb);
if (xa>=xb){
puts("false");
continue;
}
fa=findR(xa),fb=findR(xb);
P[n+].x=max(xa,xb)+;
if (xb!=P[fb].x){
if (xa!=P[fa].x){
puts("maybe");
continue;
}
puts(query(,,n,fa+,fb-)<P[fa].y?"maybe":"false");
continue;
}
if (xa!=P[fa].x){
puts(query(,,n,fa,fb-)<P[fb].y?"maybe":"false");
continue;
}
if (P[fa].y<P[fb].y){
puts("false");
continue;
}
if (query(,,n,fa+,fb-)>=P[fb].y)
puts("false");
else if (xb-xa!=fb-fa)
puts("maybe");
else
puts("true");
}
return ;
}

BZOJ1067 [SCOI2007]降雨量 线段树的更多相关文章

  1. [bzoj1067][SCOI2007]降雨量——线段树+乱搞

    题目大意 传送门 题解 我国古代有一句俗话. 骗分出奇迹,乱搞最神奇! 这句话在这道题上得到了鲜明的体现. 我的方法就是魔改版线段树,乱搞搞一下,首先借鉴了黄学长的建树方法,直接用一个节点维护年份的区 ...

  2. BZOJ1067&P2471 [SCOI2007]降雨量[线段树裸题+细节注意]

    dlntqlwsl 很裸的一道线段树题,被硬生生刷成了紫题..可能因为细节问题吧,我也栽了一次WA50分.不过这个隐藏条件真的对本菜鸡来说不易发现啊. 未知的年份连续的就看成一个就好了,把年份都离散化 ...

  3. [SCOI2007]降雨量 线段树和区间最值(RMQ)问题

      这道题是比较经典的 \(RMQ\) 问题,用线段树维护是比较简单好写的.比较难的部分是判断处理.如果没有想好直接打代码会调很久(没错就是我).怎么维护查询区间最大值我就不再这里赘述了,不懂线段树的 ...

  4. [BZOJ1067][SCOI2007]降雨量

    [BZOJ1067][SCOI2007]降雨量 试题描述 我们常常会说这样的话:“X年是自Y年以来降雨量最多的”.它的含义是X年的降雨量不超过Y年,且对于任意 Y<Z<X,Z年的降雨量严格 ...

  5. 【线段树 细节题】bzoj1067: [SCOI2007]降雨量

    主要还是细节分析:线段树作为工具 Description 我们常常会说这样的话:“X年是自Y年以来降雨量最多的”.它的含义是X年的降雨量不超过Y年,且对于任意Y<Z<X,Z年的降雨量严格小 ...

  6. BZOJ-1067 降雨量 线段树+分类讨论

    这道B题,刚的不行,各种碎点及其容易忽略,受不鸟了直接 1067: [SCOI2007]降雨量 Time Limit: 1 Sec Memory Limit: 162 MB Submit: 2859 ...

  7. BZOJ1067 [SCOI2007]降雨量 RMQ???

    求救!!!神犇帮我瞅瞅呗...未完...调了2个半小时线段树,没调出来,大家帮帮我啊!!! 小詹用st表写. 我的思路就是把中间空着的年份设为无限,然后一点点特判就行了...然而没出来... [SCO ...

  8. bzoj1067——SCOI2007降雨量(线段树,细节题)

    题目描述 我们常常会说这样的话:"X年是自Y年以来降雨量最多的".它的含义是X年的降雨量不超过Y年,且对于任意\(Y<Z<X\),Z年的降雨量严格小于X年.例如2002 ...

  9. 【BZOJ1067】[SCOI2007]降雨量 RMQ+特判

    [BZOJ1067][SCOI2007]降雨量 Description 我们常常会说这样的话:“X年是自Y年以来降雨量最多的”.它的含义是X年的降雨量不超过Y年,且对于任意Y<Z<X,Z年 ...

随机推荐

  1. 八、uboot 代码流程分析---board_init_f

    接着上一节,板子开始做前期初始化工作. 8.1 board_init_f Board_f.c (common) /* 板子初次初始化.boot_flags = 0 */ void board_init ...

  2. luogu 1631 序列合并

    priority_queue的使用,注意 a[1]+b[1],a[1]+b[2],a[1]+b[3],a[1]+b[4].......a[1]+b[n] a[2]+b[1]......... .. a ...

  3. js 将很长的内容进行页面分页显示

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. dubbo框架原理

    Dubbo提供了三个关键功能:基于接口的远程调用,容错与负载均衡,服务自动注册与发现. Dubbo使得调用远程服务就像调用本地java服务一样简单. https://www.jianshu.com/p ...

  5. Java 的NIO 3个主要概念 Channel、Buffer、Selector

    Java 的NIO 3个主要概念 Channel.Buffer.Selector,为何提高了性能

  6. sublime3添加python编译系统

    好记性不如烂笔头 为sublime3添加python编译系统,这里使用的anonconda2中的python.exe(即python2.7版本) 步骤: (1)打开sublime,打开“工具-> ...

  7. 什么是 maven的uber-jar

    在maven的一些文档中我们会发现 "uber-jar"这个术语,许多人看到后感到困惑.其实在很多编程语言中会把super叫做uber (因为suber可能是关键字), 这是上世纪 ...

  8. 百度AI—人脸在线比对

    首先访问百度AI网站:https://cloud.baidu.com/,按照下图的指示点开到应用管理的页面. 穿件完成之后到管理中可以查看到对应的 添加工具类: using System; using ...

  9. centos6中创建软raid方法

    raid概述: 组建raid阵列命令: mdadm:模式化的工具 /etc/mdadm.conf     -A  Assemble 装配模式     -C  Create 创建模式     -C:专用 ...

  10. GitHub上优秀的Go开源项目

    近一年来,学习和研究Go语言,断断续续的收集了一些比较优秀的开源项目,这些项目都非常不错,可以供我们学习和研究Go用,从中可以学到很多关于Go的使用.技巧以及相关工具和方法.我把他们整理发出来,大家有 ...