【SCOI 2007】 降雨量
【题目链接】
【算法】
线段树
此题细节很多,写程序时要细心!
【代码】
#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】 降雨量的更多相关文章
- 【BZOJ 1069】【SCOI 2007】最大土地面积 凸包+旋转卡壳
因为凸壳上对踵点的单调性所以旋转卡壳线性绕一圈就可以啦啦啦--- 先求凸包,然后旋转卡壳记录$sum1$和$sum2$,最后统计答案就可以了 #include<cmath> #includ ...
- 图论(网络流):SCOI 2007 修车
同一时刻有N位车主带着他们的爱车来到了汽车维修中心.维修中心共有M位技术人员,不同的技术人员对不同的车进行维修所用的时间是不同的.现在需要安排这M位技术人员所维修的车及顺序,使得顾客平均等待的时间最小 ...
- 解题:SCOI 2007 蜥蜴
题面 拆点跑最大流 所有能跑出去的点连向汇点,容量为inf 原点连向所有初始有蜥蜴的点,容量为1 每根柱子拆成两个点“入口”和“出口”,入口向出口连容量为高度的边,出口向别的有高度的柱子的入口连容量为 ...
- [SCOI 2007] 修车
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1070 [算法] 首先 , 我们发现 , 在倒数第i个修车会对答案产生i * k的贡献 ...
- [ SCOI 2007 ] Perm
\(\\\) \(Description\) 给出只包括多个\(0\text~ 9\)的数字集,求有多少个本质不同的全排列,使得组成的数字能够整除\(M\). \(|S|\in [1,10]\),\( ...
- [SCOI 2007] 排列
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1072 [算法] 状压DP [代码] #include<bits/stdc++. ...
- 【BZOJ1067】【POJ2637】降雨量
1067: [SCOI2007]降雨量 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 3004 Solved: 767[Submit][Status] ...
- C++之路进阶——codevs2439(降雨量)
2439 降雨量 2007年省队选拔赛四川 时间限制: 1 s 空间限制: 64000 KB 题目等级 : 大师 Master 题目描述 Description 我们常常会说这样的话 ...
- BZOJ-1067 降雨量 线段树+分类讨论
这道B题,刚的不行,各种碎点及其容易忽略,受不鸟了直接 1067: [SCOI2007]降雨量 Time Limit: 1 Sec Memory Limit: 162 MB Submit: 2859 ...
随机推荐
- UVa 11998 破碎的键盘(数组实现链表)
题意: 输入一行字符,其中包含'[' 和 ‘]’, 意思为键盘上的home 和 end 键, 然后模拟字符在键盘上输入. 输入一行最终的结果 分析: 用数组模拟一个链表, 在链表的头尾插入字母然后输出 ...
- 【Codeforces 444A】DZY Loves Physics
[链接] 我是链接,点我呀:) [题意] 题意 [题解] 两个点的子图他们的"密度"是比所有联通生成子图都要大的 "只要胆子大,遇到什么问题都不怕!" [代码] ...
- css伪类实现文字两侧划线效果
css伪类实现文字两侧划线效果,效果如下: 代码如下: <!DOCTYPE HTML> <html> <head> <title> css伪类的学习 & ...
- onos控制器通过REST API下发流表
onos控制器REST API地址:http://192.168.43.14:8181/onos/v1/docs/ stream书写格式: { "id": "675540 ...
- noip模拟赛 无题
分析:这道题和以前做过的模拟赛题很像:传送门. 对于前30%的数据可以直接暴力求,k=1的数据利用线段树求区间最大值,没有修改操作可以用主席树.100%的数据主席树是肯定用不了的,观察到K非常小,可以 ...
- MTK平台如何定位显示花屏和界面错乱等绘制异常的问题?
[DESCRIPTION] 在测试手机各项功能过程中,经常会遇到概率性复现“屏幕画花了,界面画错乱了等绘制异常问题”,而且概率还非常小: 这类问题请不要直接提交eService,而是先请测试人员及工程 ...
- [NOIP2007] 提高组 洛谷P1005 矩阵取数游戏
题目描述 帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的n*m的矩阵,矩阵中的每个元素aij均为非负整数.游戏规则如下: 1.每次取数时须从每行各取走一个元素,共n个.m次后取完矩阵所有元素: 2. ...
- 饭卡-HDU2546(01背包)
http://acm.hdu.edu.cn/showproblem.php?pid=2546 饭卡 Time Limit: 5000/1000 MS (Java/Others) Memory L ...
- Java并发包——线程通信
Java并发包——线程通信 摘要:本文主要学习了Java并发包里有关线程通信的一些知识. 部分内容来自以下博客: https://www.cnblogs.com/skywang12345/p/3496 ...
- html5视频播放器 二 (功能实现及播放优化)
样式改写css,其中的一些按钮是在“阿里妈妈”上找的字体图标,就不向上传了. /* *CoolPlay视频播放器 * 2016年8月1日 * 627314658@qq.com * */ @font-f ...