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. AVD模拟器运行异常

    The connection to adb is down, and a severe error has occured. (1)现将eclipse关闭 (2)打开命令行(cmd),输入:cd + ...

  2. 处理海量数据的高级排序之——归并排序(C++)

    代码实现                                                                                                 ...

  3. [CareerCup] 16.2 Measure Time in a Context Switch 测量上下文转换的时间

    16.2 How would you measure the time spent in a context switch? 上下文转换发生在两个进程之间,比如让一个等待进程进入执行和让一个运行进程进 ...

  4. Hibernate+Struts2进行数据的修改

    1.先把userid传给修改的页面 2.跳转到修改的页面 3.用request接收传入输入需改信息的页面 传到action Action,  通过request获取id service层 DAO层 & ...

  5. JSP内置对象---request和 response

    <%@page import="java.net.URLEncoder"%> <%@page import="com.hanqi.web.CardDAO ...

  6. sublime text 3 package control

    使用Ctrl+`快捷键或者通过View->Show Console菜单打开命令行,粘贴如下代码: import urllib.request,os; pf = 'Package Control. ...

  7. 一些变态的PHP一句话后门收集

    这类后门让网站.服务器管理员很是头疼,经常要换着方法进行各种检测,而很多新出现的编写技术,用普通的检测方法是没法发现并处理的.今天我们细数一些有意思的PHP一句话木马. 利用404页面隐藏PHP小马 ...

  8. HTML5初学篇章_4

    HTML5的表单所有type类型(补第一章) 类型 说明 button 定义可点击的按钮(大多与 JavaScript 使用来启动脚本) checkbox 定义复选框. color 定义拾色器. da ...

  9. java项目开发的一些准备工作

    做项目有一段时间了,每次接手一个新项目都要在开发前做些准备工作,方便开发. 有些东西在配置的时候经常会忘记,所有整理一份,方便以后查阅! 1.安装JDK及搭建环境,安装tomcat及搭建环境,这些一般 ...

  10. 玩坏JVM很简单--toString的递归调用

    在JVM的内存管理机制下很少发生内存溢出的情况.至少我碰见的少,好像在SSH我多次发布项目时候出现过一次.今天看见一个特简单的方法让内存溢出(好吧,我似乎作死了--!): public class I ...