【题目链接】

点击打开链接

【算法】

线段树

此题细节很多,写程序时要细心!

【代码】

#include<bits/stdc++.h>
using namespace std;
#define MAXN 50010 struct Node
{
int l,r,mx;
} Tree[MAXN<<]; int i,n,l,r,posl,posr,q,mx;
int sum[MAXN],a[MAXN],y[MAXN]; template <typename T> inline void read(T &x)
{
int f = ; x = ;
char c = getchar();
for (; !isdigit(c); c = getchar()) { if (c == '-') f = -f; }
for (; isdigit(c); c = getchar()) x = (x << ) + (x << ) + c - '';
x *= f;
}
template <typename T> inline void write(T x)
{
if (x < )
{
putchar('-');
x = -x;
}
if (x > ) write(x/);
putchar(x%+'');
}
template <typename T> inline void writeln(T x)
{
write(x);
puts("");
}
inline void update(int index)
{
Tree[index].mx = max(Tree[index<<].mx,Tree[index<<|].mx);
}
inline void build(int index,int l,int r)
{
int mid;
Tree[index].l = l; Tree[index].r = r;
if (l == r)
{
Tree[index].mx = a[l];
return;
}
mid = (l + r) >> ;
build(index<<,l,mid);
build(index<<|,mid+,r);
update(index);
}
inline int query_max(int index,int l,int r)
{
int mid;
if (Tree[index].l == l && Tree[index].r == r) return Tree[index].mx;
mid = (Tree[index].l + Tree[index].r) >> ;
if (mid >= r) return query_max(index<<,l,r);
else if (mid + <= l) return query_max(index<<|,l,r);
else return max(query_max(index<<,l,mid),query_max(index<<|,mid+,r));
}
int main() { read(n);
for (i = ; i <= n; i++)
{
read(y[i]);
read(a[i]);
if (i == ) sum[i] = ;
else sum[i] = sum[i-] + (y[i] == y[i-] + );
}
build(,,n);
read(q);
while (q--)
{
read(l); read(r);
posl = lower_bound(y+,y+n+,l) - y;
posr = lower_bound(y+,y+n+,r) - y;
if (r < l)
{
puts("false");
continue;
}
if (posl == posr)
{
if (l == r) puts("true");
else puts("maybe");
continue;
}
if (posl + == posr)
{
if (y[posr] == r && y[posl] != l && a[posr] <= a[posl]) puts("false");
else if (y[posl] != l || y[posr] != r) puts("maybe");
else if (y[posl] != l && y[posr] != r) puts("maybe");
else
{
if (a[posr] > a[posl]) puts("false");
else
{
if (l + == r) puts("true");
else puts("maybe");
}
}
continue;
}
if (y[posl] == l && y[posr] == r)
{
if (sum[posr] - sum[posl] == r - l)
{
mx = query_max(,posl+,posr-);
if (a[posr] > mx && a[posr] <= a[posl]) puts("true");
else puts("false");
} else
{
mx = query_max(,posl+,posr-);
if (a[posr] <= mx || a[posr] > a[posl]) puts("false");
else puts("maybe");
}
continue;
}
if (y[posl] == l)
{
mx = query_max(,posl+,posr-);
if (mx >= a[posl]) puts("false");
else puts("maybe");
continue;
}
if (y[posr] == r)
{
mx = query_max(,posl,posr-);
if (mx >= a[posr]) puts("false");
else puts("maybe");
continue;
}
puts("maybe");
} return ; }

【SCOI 2007】 降雨量的更多相关文章

  1. 【BZOJ 1069】【SCOI 2007】最大土地面积 凸包+旋转卡壳

    因为凸壳上对踵点的单调性所以旋转卡壳线性绕一圈就可以啦啦啦--- 先求凸包,然后旋转卡壳记录$sum1$和$sum2$,最后统计答案就可以了 #include<cmath> #includ ...

  2. 图论(网络流):SCOI 2007 修车

    同一时刻有N位车主带着他们的爱车来到了汽车维修中心.维修中心共有M位技术人员,不同的技术人员对不同的车进行维修所用的时间是不同的.现在需要安排这M位技术人员所维修的车及顺序,使得顾客平均等待的时间最小 ...

  3. 解题:SCOI 2007 蜥蜴

    题面 拆点跑最大流 所有能跑出去的点连向汇点,容量为inf 原点连向所有初始有蜥蜴的点,容量为1 每根柱子拆成两个点“入口”和“出口”,入口向出口连容量为高度的边,出口向别的有高度的柱子的入口连容量为 ...

  4. [SCOI 2007] 修车

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1070 [算法] 首先 , 我们发现 , 在倒数第i个修车会对答案产生i * k的贡献 ...

  5. [ SCOI 2007 ] Perm

    \(\\\) \(Description\) 给出只包括多个\(0\text~ 9\)的数字集,求有多少个本质不同的全排列,使得组成的数字能够整除\(M\). \(|S|\in [1,10]\),\( ...

  6. [SCOI 2007] 排列

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1072 [算法] 状压DP [代码] #include<bits/stdc++. ...

  7. 【BZOJ1067】【POJ2637】降雨量

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

  8. C++之路进阶——codevs2439(降雨量)

    2439 降雨量 2007年省队选拔赛四川  时间限制: 1 s  空间限制: 64000 KB  题目等级 : 大师 Master       题目描述 Description 我们常常会说这样的话 ...

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

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

随机推荐

  1. Linux内核0.11体系结构 ——《Linux内核完全注释》笔记打卡

    0 总体介绍 一个完整的操作系统主要由4部分组成:硬件.操作系统内核.操作系统服务和用户应用程序,如图0.1所示.操作系统内核程序主要用于对硬件资源的抽象和访问调度. 图0.1 操作系统组成部分 内核 ...

  2. Volume 1. Maths - Misc

    113 - Power of Cryptography import java.math.BigInteger; import java.util.Scanner; public class Main ...

  3. Python之面向对象函数式编程

    Python之面向对象函数式编程 函数式编程的根本就是用 def 去模拟数学式的编程逻辑. 类似与 y = 2*x + 1 ,当x = 3 时,函数的结果y就得7. def test(x): retu ...

  4. restframework框架之认证

    1. 认证之APIView 在聊APIView之前, 我们先重温一下django2.x的CBV流程 a. 对于django而言, 当浏览器请求到达之后,按照规则首先会经过各大中间件(Middlewar ...

  5. 第十八节:Scrapy爬虫框架之settings文件详解

    # -*- coding: utf-8 -*- # Scrapy settings for maoyan project## For simplicity, this file contains on ...

  6. <git>……git的基本使用……//

    1.切换到存放git版本库的地方 2.Git clone url(github上的地址) 3.设置全局用户(输入一次即可) git config --global user.name github上的 ...

  7. 破损的键盘(codevs 4650)

    题目描述 Description 有一天,你需要打一份文件,但是你的键盘坏了,上面的"home"键和"end"键会时不时地按下,而你却毫不知情,甚至你都懒得打开 ...

  8. memcache 原理 & 监测 & 查看状态 & stats & 结构

    Mencache内存存储方式:slab/LRU,采用预先申请固定大小的内存页(slab/page),然后再把内存分成多个块(chunk) 先放一张从网上找到的memcache内存结构图,觉得非常的赞:

  9. windows开启远程

    windows开启远程桌面超级简单,跟linux相比太简单了. 补充:有瑕疵,应该是远程中的远程桌面属性打钩,但是W8.1没有这个选项,W7可以,其次创建一个管理员账户,身份是管理员,不是标准用户,要 ...

  10. CSU - 1333 1333: Funny Car Racing(spfa)

    http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1333 这题多了一个限制条件是每一条路都会规律的开放a时间关闭b时间,车子必须在开放的时候进入,在关 ...