bzoj 1067: [SCOI2007]降雨量 (离散化+线段树)
链接: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]降雨量 (离散化+线段树)的更多相关文章
- 1067. [SCOI2007]降雨量【线段树】
Description 我们常常会说这样的话:“X年是自Y年以来降雨量最多的”.它的含义是X年的降雨量不超过Y年,且对于任意 Y<Z<X,Z年的降雨量严格小于X年.例如2002,2003, ...
- bzoj 1067: [SCOI2007]降雨量
题目链接: bzoj 1067: [SCOI2007]降雨量 题解: 很简单的一道题,但代码里有许多细节需要注意,切容易出错,调了三个小时OTZ 做一个st表维护区间最大值就 在获得年份在序列中的po ...
- bzoj 1067: [SCOI2007]降雨量 模擬
1067: [SCOI2007]降雨量 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 2010 Solved: 503[Submit][Status] ...
- 洛谷 2471 BZOJ 1067 [SCOI2007]降雨量
[题解] 用线段树维护区间最大值(因为没有修改,St表也可以),然后由于x,y可能是降雨量未知的年份,需要进行分类讨论. #include<cstdio> #include<algo ...
- bzoj1067——SCOI2007降雨量(线段树,细节题)
题目描述 我们常常会说这样的话:"X年是自Y年以来降雨量最多的".它的含义是X年的降雨量不超过Y年,且对于任意\(Y<Z<X\),Z年的降雨量严格小于X年.例如2002 ...
- 1067: [SCOI2007]降雨量
1067: [SCOI2007]降雨量 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 2148 Solved: 554[Submit][Status] ...
- 南阳理工 题目9:posters(离散化+线段树)
posters 时间限制:1000 ms | 内存限制:65535 KB 难度:6 描述 The citizens of Bytetown, AB, could not stand that ...
- SGU 180 Inversions(离散化 + 线段树求逆序对)
题目链接:http://acm.sgu.ru/problem.php?contest=0&problem=180 解题报告:一个裸的求逆序对的题,离散化+线段树,也可以用离散化+树状数组.因为 ...
- 【POJ】2528 Mayor's posters ——离散化+线段树
Mayor's posters Time Limit: 1000MS Memory Limit: 65536K Description The citizens of Bytetown, A ...
随机推荐
- Centos7之Systemd(Service文件)详解
一.开机启动 对于那些支持 Systemd 的软件,安装的时候,会自动在/usr/lib/systemd/system目录添加一个配置文件. 如果你想让该软件开机启动,就执行下面的命令(以httpd. ...
- 数学基础IV 欧拉函数 Miller Rabin Pollard's rho 欧拉定理 行列式
找了一些曾经没提到的算法.这应该是数学基础系最后一篇. 曾经的文章: 数学基础I 莫比乌斯反演I 莫比乌斯反演II 数学基础II 生成函数 数学基础III 博弈论 容斥原理(hidden) 线性基(h ...
- Truncated Power Method for Sparse Eigenvalue Problems
目录 算法 k的选择 \(x\)的初始化 代码 抱歉,真的没怎么看懂,当然,估计和我现在没法静下心来好好看也有关系. 算法 想法非常非常简单吧,就是在原来幂法的基础上,每次迭代的时候再加个截断.当然, ...
- c++入门之运算符重载
c++函数重载:可以将一个函数名用于不同功能的函数.从而处理不同的对象.对于运算符,同样也有这样的用途,即对同一个标志符的运算符,可以运用到不同的功能中去. 首先引入:运算符重载,在C语言中甚至都有运 ...
- vue: WebStorm设置快速编译运行
WebSorm是一款优秀的前端开发工具,而Vue项目可以使用Node进行编译运行,平常我们可以通过命令行部署项目进行调试. 本文介绍设置Webstorm进行快速部署Vue项目. 第一步 点击启动快捷按 ...
- redis中的hash、列表、集合操作
一.hash操作 数据结构:key:{k1:v1, k2:v2, k3:v3} 类似Python中的字典 如:info : {name: lina, age: 22, sex: F} hset key ...
- CopyOnWriteArrayList源码分析
基于jdk1.7源码 一.无锁容器 CopyOnWriteArrayList是JDK5中添加的新的容器,除此之外,还有CopyOnWriteArraySet.ConcurrentHahshMap和Co ...
- semantic-ui 标题
在semantic-ui中定义了5中标题样式,注意HTML中有h1-h6,而semantic-ui中只有h1-h5. 不过需要注意的是,semantic-ui的标题仍旧使用h1-h5来表示,但是在cl ...
- Linux下设置MySql自动启动
https://www.cnblogs.com/sunny3096/p/7954146.html
- Angular 双向数据绑定
<!DOCTYPE html><html ng-app="myApp"><head lang="en"> <meta ...