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 ...
随机推荐
- make太慢了,加快编译速度的方法 make -j
make -j 既然IO不是瓶颈,那CPU就应该是一个影响编译速度的重要因素了. 用make -j带一个参数,可以把项目在进行并行编译,比如在一台双核的机器上,完全可以用make -j4,让make最 ...
- python爬虫随笔-scrapy框架(1)——scrapy框架的安装和结构介绍
scrapy框架简介 Scrapy,Python开发的一个快速.高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据.Scrapy用途广泛,可以用于数据挖掘.监测和自动化测试 ...
- BZOJ1283 序列 网络流区间覆盖模型
就是区间覆盖模型的费用流版. 区间覆盖模型
- matplotlib 入门之The Lifecycle of a plot
文章目录 Note 数据 准备开始 操控风格 我错了!!! 定制图像 特别注意!!! figsize=(width, height)!!! 格式化标签 组合多个可视化对象? 保存你的图片 matplo ...
- JS 深拷贝和浅拷贝概念,以及实现深拷贝的三种方式
一.理解堆栈,基本数据类型与引用数据类型 1.堆栈 栈(stack):系统自动分配的内存空间,内存会由系统自动释放,用来存放函数的参数值,局部变量的值等,特点是先进后出. 堆(heap):系统动态分配 ...
- 543A - Writing Code(二维动态规划)
题意:现在要写m行代码,总共有n个文件,现在给出第i个文件每行会出现v[i]个bug,问你在bug少于b的条件下有多少种安排 分析:定义dp[i][j][k],i个文件,用了j行代码,有k个bug 状 ...
- Django之在Python中调用Django环境
Django之在Python中调用Django环境 新建一个py文件,在其中写下如下代码: import os if __name__ == '__main__': os.environ.setdef ...
- 福州大学软件工程1816 | W班 团队Alpha阶段成绩汇总排名(第9、10次作业)
写在前面 汇总成绩排名链接 1.作业链接 第九次作业--项目Alpha冲刺(团队) 第十次作业--事后诸葛亮(团队) 2.评分准则 本次作业包括现场Alpha答辩评分(映射总分为100分)+博客分(总 ...
- mysql-SQL Error: 1205, SQLState: 41000
mysql-SQL Error: 1205, SQLState: 41000——CSDN问答频道https://ask.csdn.net/questions/176492 mysql-SQL Erro ...
- 关于spring的源码的理解
从最基础的Hello World开始. spring的Hello World就三行代码: public void test() { ApplicationContext context = new C ...