我們常常會說這樣的話:「x年是自y年以來降雨量最多的」。它的含義是x年的降雨量不超過y年,且對於任意
y<z<x,z年的降雨量嚴格小於x年。例如2002,2003,2004和2023年的降雨量分別為4920,5901,2832和3890,
則可以說「2023年是自2023年以來最多的」,但不能說「2023年是自2023年以來最多的」由於有些年份的降雨量未
知,有的說法是可能正確也可以不正確的。
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
「x年是自y年以來降雨量最多的」。它的含義是x年的降雨量不超過y年,且對於任意y<z<x,z年的降雨量嚴格小於x年。
短短這一句話,包含的資訊量卻是不少啊。
細節不少,需要注意。
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
#define ll long long
#define inf 0x3f3f3f3f
//const int mod = 1000000007;
const int maxm = 1000010;
const int maxn = 50005;
int n, c;
int d[maxn][30];
int a[maxn];
int year[maxn];
void rmq_init()
for (int j = 1; (1
<< j) <= n; j++)
}}int rmq(int l, int r)
int main()
rmq_init();
scanf("%d", &c);
for (int i = 0; i < c; i++)
if (x == y)
int lef = lower_bound(year, year + n, x) - year;
int l = year[lef];
int rig = lower_bound(year, year + n, y) - year;
int r = year[rig];
if (l != x&&y != r)
else
if (l==x&&r != y)
else
}else
if(l!=x&&r==y)
else
}else
else
else
}else}}
}return
0;}
最大降雨量
問題描述 由於沙之國長年乾旱,法師小明準備施展自己的乙個神秘法術來求雨。這個法術需要用到他手中的 49 張法術符,上面分別寫著 1 至 49 這 49 個 數字。法術一共持續 7 周,每天小明都要使用一張法術符,法術符不能重複使 用。每週,小明施展法術產生的能量為這週 7 張法術符上數字的中位數。法...
1067 SCOI2007 降雨量 線段樹
我們常常會說這樣的話 x年是自y年以來降雨量最多的 它的含義是x年的降雨量不超過y年,且對於任意 y z x,z年的降雨量嚴格小於x年。例如2002,2003,2004和2005年的降雨量分別為4920,5901,2832和3890,則可以說 2005年是自2003年以來最多的 但不能說 2005年...
2017 9 28 降雨量 思考記錄
論邏輯清晰的重要性 首先大小的關係明擺著是要你建一顆線段樹 然後就可以分類討論了 x沒有 y有 x有 y沒有 x沒有 y沒有 x有 y有 對於都沒有的情況 只可能是maybe 對於乙個沒有的情況,只有可能有false和maybe 對於都有的 可能有true maybe false 對於有的直接查詢,...