链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1067

思路: 毒瘤题,写的自闭,改了一晚上,注意要理清题目的逻辑 x小于等于y,x,y之间的数严格小于x,不能等于;

分类讨论懒得写的,很简单的分类讨论。

实现代码:

#include<bits/stdc++.h>
using namespace std;
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define mid int m = (l + r) >> 1
const int M = 1e5+;
const int inf = 0x3f3f3f3f;
int vis[M];
int num[M<<],sum[M<<],x1[M],x2[M],yy[M],y2[M],cnt,a[M<<];
void pushup(int rt){
sum[rt] = max(sum[rt<<],sum[rt<<|]);
num[rt] = num[rt<<] + num[rt<<|];
} void update(int p,int c,int l,int r,int rt){
if(l == r){
sum[rt] = c;
num[rt] = ;
return ;
}
mid;
if(p <= m) update(p,c,lson);
else update(p,c,rson);
pushup(rt);
} int query(int L,int R,int l,int r,int rt){
if(L <= l&&R >= r){
return sum[rt];
}
mid;
int ret = -inf;
if(L <= m) ret = max(ret,query(L,R,lson));
if(R > m) ret = max(ret,query(L,R,rson));
return ret;
} int ask(int L,int R,int l,int r,int rt){
if(L <= l&&R >= r){
return num[rt];
}
mid;
int ret = ;
if(L <= m) ret += ask(L,R,lson);
if(R > m) ret += ask(L,R,rson);
return ret;
} int main()
{
int n,x,y,m;
scanf("%d",&n);
int cnt = ;
for(int i = ;i <= n;i ++){
scanf("%d%d",&x1[i],&yy[i]);
a[++cnt] = x1[i];
}
scanf("%d",&m);
for(int i = ;i <= m;i ++){
scanf("%d%d",&x2[i],&y2[i]);
a[++cnt] = x2[i];
a[++cnt] = y2[i];
}
sort(a+,a++cnt);
int nn = unique(a+,a++cnt)-(a+);
for(int i = ;i <= n;i ++){
x = lower_bound(a+,a+nn+,x1[i]) - a;
vis[x] = yy[i];
update(x,yy[i],,nn,);
}
for(int i = ;i <= m;i ++){
x = lower_bound(a+,a+nn+,x2[i]) - a;
y = lower_bound(a+,a+nn+,y2[i]) - a;
if(x > y){
printf("false\n");
continue;
}
if(!vis[x]&&!vis[y]) printf("maybe\n");
else if(vis[x]&&vis[y]){
int cnt = query(x+,y-,,nn,);
int flag = ask(x,y,,nn,);
if(cnt<vis[y]&&vis[y]<=vis[x]){
if(flag == y2[i]-x2[i]+) printf("true\n");
else printf("maybe\n");
}
else printf("false\n");
}
else if(!vis[x]&&vis[y]){
int cnt = query(x,y-,,nn,);
if(cnt >= vis[y]) printf("false\n");
else printf("maybe\n");
}
else{
int cnt = query(x+,y,,nn,);
if(cnt >= vis[x]) printf("false\n");
else printf("maybe\n");
}
}
return ;
}

bzoj 1067: [SCOI2007]降雨量 (离散化+线段树)的更多相关文章

  1. 1067. [SCOI2007]降雨量【线段树】

    Description 我们常常会说这样的话:“X年是自Y年以来降雨量最多的”.它的含义是X年的降雨量不超过Y年,且对于任意 Y<Z<X,Z年的降雨量严格小于X年.例如2002,2003, ...

  2. bzoj 1067: [SCOI2007]降雨量

    题目链接: bzoj 1067: [SCOI2007]降雨量 题解: 很简单的一道题,但代码里有许多细节需要注意,切容易出错,调了三个小时OTZ 做一个st表维护区间最大值就 在获得年份在序列中的po ...

  3. bzoj 1067: [SCOI2007]降雨量 模擬

    1067: [SCOI2007]降雨量 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 2010  Solved: 503[Submit][Status] ...

  4. 洛谷 2471 BZOJ 1067 [SCOI2007]降雨量

    [题解] 用线段树维护区间最大值(因为没有修改,St表也可以),然后由于x,y可能是降雨量未知的年份,需要进行分类讨论. #include<cstdio> #include<algo ...

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

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

  6. 1067: [SCOI2007]降雨量

    1067: [SCOI2007]降雨量 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 2148  Solved: 554[Submit][Status] ...

  7. 南阳理工 题目9:posters(离散化+线段树)

    posters 时间限制:1000 ms  |  内存限制:65535 KB 难度:6   描述 The citizens of Bytetown, AB, could not stand that ...

  8. SGU 180 Inversions(离散化 + 线段树求逆序对)

    题目链接:http://acm.sgu.ru/problem.php?contest=0&problem=180 解题报告:一个裸的求逆序对的题,离散化+线段树,也可以用离散化+树状数组.因为 ...

  9. 【POJ】2528 Mayor's posters ——离散化+线段树

    Mayor's posters Time Limit: 1000MS    Memory Limit: 65536K   Description The citizens of Bytetown, A ...

随机推荐

  1. Python全栈开发之路 【第一篇】:Python 介绍

    本节内容 一.Python介绍 python的创始人为荷兰人——吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本 ...

  2. stl stack用法

    栈后进先出 #include<iostream> #include<algorithm> #include<cstdio> #include<stack> ...

  3. 牛客练习赛35 C.函数的魔法

    链接 [https://ac.nowcoder.com/acm/contest/32] 题意 题目描述 一位客人来到了此花亭,给了女服务员柚一个数学问题:我们有两个函数,F(X)函数可以让X变成(XX ...

  4. 第十二届湖南省赛 (B - 有向无环图 )(拓扑排序+思维)好题

    Bobo 有一个 n 个点,m 条边的有向无环图(即对于任意点 v,不存在从点 v 开始.点 v 结束的路径). 为了方便,点用 1,2,…,n 编号. 设 count(x,y) 表示点 x 到点 y ...

  5. Unique Snowflakes UVA - 11572 (离散化+尺取法)

    Emily the entrepreneur has a cool business idea: packaging and selling snowflakes. She has devised a ...

  6. iOS --- Touch ID指纹解锁

    https://www.cnblogs.com/ljmaque/p/TouchID.html 最近在项目中刚好用到了TouchId指纹解锁功能,之前也没有接触过,立马百度看看究竟是要如何使用,发现其实 ...

  7. MySQL 通过多个示例学习索引

    最近在准备面试,关于索引这一块,发现很多以前忽略的点,这里好好整理一下 首先为什么要建立索引 一本书,有章.节.段.行这种单位. 如果现在需要找一个内容:第9章>第2节>第3段>第4 ...

  8. react 组件列表

    let data=[ [ '同时入选IMDB250和豆瓣电影250的电影', '带你进入不正常的世界', '用电[影]来祭奠逝去的岁月', '女孩们的故事[电影]', '', '使用 App [找电影 ...

  9. 非关系型数据库----MongoDB

    一.什么是MongoDB? MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统. 在高负载的情况下,添加更多的节点,可以保证服务器性能. MongoDB 旨在为WEB应用提 ...

  10. bash中的pasue

    #!/bin/bash echo 按任意键继续 read -n