【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。
判断降雨量是否为最大就用线段树,判断是否全部已知就检查这一段年份内的数据是否绝对稠密。
话说这题真的很纠结啊……
【代码】
传统朴素线段树,只用查找区间最大值,不用考虑修改还是好写。