思路题


  玛雅,这分类讨论快讨论地疯了……

  从huzecong神的题解那里得到的灵感……

  首先考虑最好确定的情况:为true的时候,此时必须同时满足

    1.x和y这两年的降雨量已知,且rain[x]<=rain[y]

    2.中间每一年的降雨量都已知,且降雨量的最大值小于rain[x]

  然后我们可以考虑一下为false的情况:(这两个条件满足其一即可)

    1.x和y这两年的降雨量已知,且rain[x]>rain[y]

    2.x和y这两年的降雨量只知其中之一,且中间这些年(已知的部分)最大的降雨量大于这个已知的x或y年的降雨量

  剩下的情况直接输出maybe

  但是如果你这么写你会发现你RE了= =,为什么呢?因为在x和y这两年的降雨量只知其中之一时,“中间年份“已知的可能一个也没有,也就是说我在进行中间这些年的降雨量的最大值的查询时会直接爆炸(我是用线段树来查询的)……所以需要在判false的第二种情况之前加上这一条:

    如果x和y中间没有其他年份,则输出maybe

然后我才AC掉……

 /**************************************************************
Problem: 1067
User: Tunix
Language: C++
Result: Accepted
Time:164 ms
Memory:3616 kb
****************************************************************/ //BZOJ 1067
#include<vector>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#define rep(i,n) for(int i=0;i<n;++i)
#define F(i,j,n) for(int i=j;i<=n;++i)
#define D(i,j,n) for(int i=j;i>=n;--i)
#define pb push_back
using namespace std;
inline int getint(){
int v=,sign=; char ch=getchar();
while(ch<''||ch>''){ if (ch=='-') sign=-; ch=getchar();}
while(ch>=''&&ch<=''){ v=v*+ch-''; ch=getchar();}
return v*sign;
}
const int N=1e5+,INF=~0u>>;
typedef long long LL;
/******************tamplate*********************/
int n,m,t[N<<],year[N],rain[N];
#define L (o<<1)
#define R (o<<1|1)
#define mid (l+r>>1)
void build(int o,int l,int r){
if (l==r) t[o]=rain[l];
else{
build(L,l,mid);
build(R,mid+,r);
t[o]=max(t[L],t[R]);
}
}
int ql,qr;
int query(int o,int l,int r){
if (ql<=l && qr>=r) return t[o];
else{
int ans=;
if (ql<=mid) ans=max(ans,query(L,l,mid));
if (qr>mid) ans=max(ans,query(R,mid+,r));
return ans;
}
}
int main(){
#ifndef ONLINE_JUDGE
freopen("1067.in","r",stdin);
freopen("1067.out","w",stdout);
#endif
n=getint();
F(i,,n) year[i]=getint(),rain[i]=getint();
build(,,n);
m=getint();
int x,y,t1,t2;
F(i,,m){
x=getint(); y=getint();
t1=upper_bound(year+,year+n+,x)-year;
t2=lower_bound(year+,year+n+,y)-year;
if (year[t2]==y && year[t1-]==x && t1!=n+ && t2!=n+ &&
t2-t1==y-x- && rain[t2]<=rain[t1-]){
ql=t1; qr=t2-;
if (query(,,n)<rain[t2]) {puts("true");continue;}
else {puts("false");continue;}
}
if(year[t2]==y && year[t1-]==x && rain[t2]>rain[t1-])
{puts("false");continue;}
if(t2==t1){puts("maybe");continue;}
if(year[t2]==y && t2!=n+){
ql=t1; qr=t2-;
if (query(,,n)>=rain[t2]) {puts("false");continue;}
}
if(year[t1-]==x && t1!=n+){
ql=t1; qr=t2-;
if (query(,,n)>=rain[t1-]) {puts("false");continue;}
}
puts("maybe");
}
return ;
}

1067: [SCOI2007]降雨量

Time Limit: 1 Sec  Memory Limit: 162 MB
Submit: 2370  Solved: 613
[Submit][Status][Discuss]

Description


们常常会说这样的话:“X年是自Y年以来降雨量最多的”。它的含义是X年的降雨量不超过Y年,且对于任意Y<Z<X,Z年的降雨量严格小于X年。例如
2002,2003,2004和2005年的降雨量分别为4920,5901,2832和3890,则可以说“2005年是自2003年以来最多的”,但
不能说“2005年是自2002年以来最多的”由于有些年份的降雨量未知,有的说法是可能正确也可以不正确的。

Input


入仅一行包含一个正整数n,为已知的数据。以下n行每行两个整数yi和ri,为年份和降雨量,按照年份从小到大排列,即yi<yi+1。下一行包含一个正
整数m,为询问的次数。以下m行每行包含两个数Y和X,即询问“X年是自Y年以来降雨量最多的。”这句话是必真、必假还是“有可能”。

Output

对于每一个询问,输出true,false或者maybe。

Sample Input

6
2002 4920
2003 5901
2004 2832
2005 3890
2007 5609
2008 3024
5
2002 2005
2003 2005
2002 2007
2003 2007
2005 2008

Sample Output

false
true
false
maybe
false

HINT

100%的数据满足:1<=n<=50000, 1<=m<=10000, -10^9<=yi<=10^9, 1<=ri<=10^9

Source

[Submit][Status][Discuss]

【BZOJ】【1067】 【SCOI2007】降雨量的更多相关文章

  1. bzoj 1067: [SCOI2007]降雨量

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

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

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

  3. bzoj 1067: [SCOI2007]降雨量 (离散化+线段树)

    链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1067 思路: 毒瘤题,写的自闭,改了一晚上,注意要理清题目的逻辑 x小于等于y,x,y之间的 ...

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

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

  5. 1067: [SCOI2007]降雨量

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

  6. 【BZOJ】1067: [SCOI2007]降雨量(rmq+变态题)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1067 好不爽,弄了一个晚上. 好不爽. 还是照着别人程序拍着看的!!! 噗 这题很变态. 首先,我没 ...

  7. 1067: [SCOI2007]降雨量 - BZOJ

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

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

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

  9. BZOJ 1067 降雨量(RMQ-ST+有毒的分类讨论)

    1067: [SCOI2007]降雨量 Time Limit: 1 Sec  Memory Limit: 162 MB Submit: 4399  Solved: 1182 [Submit][Stat ...

  10. BZOJ 1067 & Interval_Tree

    1067: [SCOI2007]降雨量 Time Limit: 1 Sec Memory Limit: 162 MB Submit: 3099 Solved: 800 Description 我们常常 ...

随机推荐

  1. Resources are low on NN. Please add or free up more resources then turn off safe mode manually.

    提交spark应用到yarn集群上的时候在跑一段时间就会出现这个报错: 根据上面的报错原因分析是因为集群资源不够,集群的自我保护机制使hdfs处于安全模式,然后我用"hdfs dfsadmi ...

  2. ThinkPHP之中getlist方法实现数据搜索功能

    自己在ThinkPHP之中的model之中书写getlist方法,其实所谓的搜索功能无非就是数据库查询之中用到的like  %string%,或者其他的 字段名=特定值,这些sql语句拼接在and语句 ...

  3. php变量那些事:php引擎对变量声明、存储简要分析(ZVAL)

    php中变量有三个基本的特性: 1.变量符号.也就是变量的名称.形象比喻,kv中的key.这个有php引擎的符号表(hash表)管理. 2.变量类型.一个php变量可以是boolean.integer ...

  4. windows7安装IE11点击图标没反应

    可以通过修改 Windows 注册表的方式解决: Win+R 打开“运行”后输入 regedit 打开 注册表编辑器 打开注册表编辑器(regedit)以后,找到注册表项HKEY_CURRENT_US ...

  5. List集合实战总结

    //构造被分隔的集合 List<object> list = new List<object>(); for (int i = 0; i <= 100; i++) { l ...

  6. Partitioner没有被调用的情况

    map的输出,通过分区函数决定要发往哪个reducer. 有2种情况,我们自定义的Partitioner不会被调用 1) reducer个数为0 这种情况,没有reducer,不需要分区 2) red ...

  7. JavaWeb之 Servlet执行过程 与 生命周期

    Servlet的概念 什么是Servlet呢? Java中有一个叫Servlet的接口,如果一个普通的类实现了这个接口,这个类就是一个Servlet.Servlet下有一个实现类叫HttpServle ...

  8. 菜鸟学习SSH——目录

    菜鸟学习Struts--配置Struts环境 菜鸟学习Struts--简易计算器 菜鸟学习Struts--bean标签库 菜鸟学习Struts--Scope属性 菜鸟学习Struts--国际化 菜鸟学 ...

  9. 联想Z470安装10.11懒人版成功!!特此分享!!

    折腾黑苹果也断断续续好几个月了,在远景也爬了好多贴,遇到问题基本上靠自己解决,自己组的台式机已基本完美,大学期间买的联想Z470现在是“食之无味,弃之可惜”,想想也来试试装个黑苹果玩玩,之前装过10. ...

  10. Objective-C编码规范

    参考 http://www.csdn.net/article/2015-06-01/2824818-objective-c-style-guide/1 介绍 我们制定Objective-C编码规范的原 ...