【SCOI2007】降雨量

本文详细解析了如何通过已知数据确定某一年份的降雨量是否为自某一特定年以来的最大值,包括数据范围、输入输出格式及解题算法(线段树与动态规划)。重点介绍了判断条件和代码实现,提供了复杂逻辑下的多种可能性分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【SCOI2007】降雨量

【题目描述】

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

【输入】

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

【输出】

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

【输入样例】

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

【输出样例】

false
true
false
maybe
false

【数据范围】

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

【题解】

我使用的算法是线段树,但还有一个动态规划的解法,本蒟蒻不会TAT

其实只用讨论true和maybe两种情况,剩下的情况就是false了。

答案为true的条件:

①询问中从y到x之间所有的年份都已知;

②x+1~y-1之间的降雨量都小于x年;

③x年的降雨量小于等于y年的降雨量。

以上条件同时满足,答案即为true。

答案为maybe的条件(三种):

(一)

①x或y中有且只有一年的降雨量未知;

x+1~y-1之间的降雨量都小于x年。

以上条件同时满足,答案即为maybe。

(二)

x和y的降雨量都未知。

满足此条件,答案即为maybe。

(三)

这个是最复杂的……

x和y的降雨量都已知;

x+1~y-1之间至少有一年的降雨量未知;

x+1~y-1之间已知的降雨量都小于x年;

④x年的降雨量小于等于y年的降雨量。

以上条件同时满足,答案即为maybe。

判断降雨量是否为最大就用线段树,判断是否全部已知就检查这一段年份内的数据是否绝对稠密。

话说这题真的很纠结啊……

【代码】

传统朴素线段树,只用查找区间最大值,不用考虑修改还是好写。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值