降雨量 HYSBZ 1067 題解

2021-07-29 07:05:23 字數 1922 閱讀 4218

我們常常會說這樣的話:「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 對於有的直接查詢,...