2439 降雨量

2007年省队选拔赛四川

 时间限制: 1 s
 空间限制: 64000 KB
 题目等级 : 大师 Master
 
 
 
题目描述 Description

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

输入描述 Input Description

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

输出描述 Output Description

对于每一个询问,输出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

数据范围及提示 Data Size & Hint

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

题解:

ST表维护区间+二分查找

代码:

 #include <cstdio>
#include <cstdlib>
#include <climits>
#include <algorithm>
#define maxn 100005
#define LOGN 18 using namespace std; int n,st[LOGN][maxn],q,x,y,d[maxn],a[maxn],ans,logn,Log[maxn]; int query(int l, int r)
{
if (l>r) return INT_MIN;
int len=Log[r-l+];
return max(st[len][l],st[len][r-(<<len)+]);
} void build()
{
logn=Log[n];
for (int i=; i<=n;i++) st[][i]=a[i];
for (int i=; i<=logn;i++)
for (int j=;j<=n-(<<i)+;j++)
st[i][j]=max(st[i-][j],st[i-][j+(<<i-)]);
} int getpos(int x){ return lower_bound(d + , d + n + , x) - d; } int main()
{
for (int i=,j=,k=-;i<=maxn;i++)
if (i==j) Log[i]=++k,j<<=;
else Log[i]=k;
scanf("%d",&n);
for (int i=;i<=n;++i)
scanf("%d%d",d+i,a+i);
scanf("%d",&q);
build();
while (q--)
{
scanf("%d%d",&x,&y);
int l=getpos(x),r=getpos(y),m;
bool lx=l<=n&&d[l]==x,rx=r<=n&&d[r]==y;
if (!rx) --r;
if (lx)
if (rx)
{
m = query(l+, r-);
if (a[l]<a[r]) ans=;
else
if (m<a[r])
if (r-l==y-x) ans=;
else ans=-;
else ans=;
}
else
{
m=query(l+,r);
if (m<a[l]) ans=-;
else ans=;
}
else
if (rx)
{
m=query(l,r-);
if (m < a[r]) ans=-;
else ans = ;
}
else ans=-;
if (ans==) printf("true\n");
else if (!ans) printf("false\n");
else printf("maybe\n");
}
return ;
}

C++之路进阶——codevs2439(降雨量)的更多相关文章

  1. C++之路进阶codevs1269(匈牙利游戏)

    1269 匈牙利游戏 2012年CCC加拿大高中生信息学奥赛  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond       题目描述 Description ...

  2. C++之路进阶——优先队列优化最短路径算法(dijkstra)

    一般的dijkstra算法利用贪心的思想,每次找出最短边,然后优化到其他点的的距离,我们还采用贪心思路,但在寻找最短边进行优化,之前是双重for循环,现在我们用优先队列来实现. 代码解释: //样例程 ...

  3. C++之路进阶——HDU1880(魔咒词典)

    ---恢复内容开始--- New~ 欢迎参加2016多校联合训练的同学们~ 魔咒词典 Time Limit: 8000/5000 MS (Java/Others)    Memory Limit: 3 ...

  4. C++之路进阶——poj3461(Oulipo)

    Oulipo Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 35694   Accepted: 14424 Descript ...

  5. C++之路进阶——P2022

    P2022 有趣的数 让我们来考虑1到N的正整数集合.让我们把集合中的元素按照字典序排列,例如当N=11时,其顺序应该为:1,10,11,2,3,4,5,6,7,8,9. 定义K在N个数中的位置为Q( ...

  6. C++之路进阶codevs1242(布局)

    1242 布局 2005年USACO  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold    <:section class="hbox" ...

  7. C++之路进阶——codevs3333(高级打字机)

    3333 高级打字机  时间限制: 1 s  空间限制: 256000 KB  题目等级 : 大师 Master     题目描述 Description 早苗入手了最新的高级打字机.最新款自然有着与 ...

  8. C++之路进阶——codevs1789(最大获利)

    1789 最大获利 2006年NOI全国竞赛  时间限制: 2 s  空间限制: 128000 KB  题目等级 : 大师 Master       题目描述 Description 新的技术正冲击着 ...

  9. C++之路进阶——codevs2306(晨跑)

    2306 晨跑 2009年省队选拔赛山东  时间限制: 1 s  空间限制: 256000 KB  题目等级 : 大师 Master       题目描述 Description Elaxia最近迷恋 ...

随机推荐

  1. 再过几个月Apple Watch就要正式发布了

    本文由cocoaChina译者小组成员@TurtleFromMars 翻译自Appcoda,原作者:julian engel,原文:WatchKit Introduction: Building a ...

  2. 一个不错的安卓下ssh客户端

    1.使用安卓作为ssh客户端连接ssh服务器 软件名:JuiceSSH 版本   :1.4.8 大小   :4.22 M 百度网盘地址:JuiceSSH_1.4.8.apk  或 JuiceSSH_1 ...

  3. sql 将字符串转换为表

    我们常常碰到需要将用户输入之字符串依特定的分隔符转换为表的一个栏位,下面是我写的一个sql函数.如能灵活运用则用途广泛. -- ==================================== ...

  4. java解析xml文档(dom)

    DOM解析XML文档 读取本地的xml文件,通过DOM进行解析,DOM解析的特点就是把整个xml文件装载入内存中,形成一颗DOM树形结构,树结构是方便遍历和和操纵. DOM解析的特性就是读取xml文件 ...

  5. 关于padding与margin的区别

    代码一:全为padding. <!doctype html><html><head>    <meta charset="UTF-8"&g ...

  6. 论meta name= viewport content= width=device-width initial-scale=1 minimum-scale=1 maximum-scale=1的作用

    一.先明白几个概念 phys.width: device-width: 一般我们所指的宽度width即为phys.width,而device-width又称为css-width. 其中我们可以获取ph ...

  7. linux笔记五-------编辑器

    1. 三种模式    命令(默认).尾行.编辑模式 2. 尾行模式    :    :q      退出vi编辑器    :w      保存修改    :wq     保存并退出编辑    :q!  ...

  8. 理解Oracle TM和TX锁

    在Oracle中有很多锁,通过v$lock_type视图可以查看Oracle中所有类型的锁,在本篇文章中我们熟悉一下TM和TX锁的类型 SQL> select * from v$lock_typ ...

  9. 2016HUAS暑假集训训练2 J - 今年暑假不AC

    题目链接:http://acm.hust.edu.cn/vjudge/contest/121192#problem/J 此题要求是计算能够看到最多的节目 ,贪心算法即可,首先对结束时间排序,然后在把开 ...

  10. 2016HUAS暑假集训训练2 A - Is It A Tree?

    Description A tree is a well-known data structure that is either empty (null, void, nothing) or is a ...