CODEVS 3304 水果姐逛水果街

2021-08-20 02:55:42 字數 2069 閱讀 1355

題目描述

水果姐今天心情不錯,來到了水果街。

水果街有

n家水果店,呈直線結構,編號為

1~n,每家店能買水果也能賣水果,並且同一家店賣與買的**一樣。

學過oi

的水果姐迅速發現了乙個賺錢的方法:在某家水果店買乙個水果,再到另外一家店賣出去,賺差價。

就在水果姐竊喜的時候,

cgh突然出現,他為了為難水果姐,給出

m個問題,每個問題要求水果姐從第

x家店出發到第

y家店,途中只能選一家店買乙個水果,然後選一家店(可以是同一家店,但不能往回走)賣出去,求每個問題中最多可以賺多少錢。

輸入描述

第一行n

,表示有n家店

下來n個正整數,表示每家店乙個蘋果的**。

下來乙個整數

m,表示下來有

m個詢問。

下來有m

行,每行兩個整數x和

y,表示從第

x家店出發到第

y家店。

輸出描述有m

行。每行對應乙個詢問,乙個整數,表示面對

cgh的每次詢問,水果姐最多可以賺到多少錢。

樣例輸入

102 8 15 1 10 5 19 19 3 5

46 6

2 82 2

6 3樣例輸出

018

014資料範圍及提示

0<=

蘋果的**

<=10^8

0題解:線段樹儲存最大值、最小值、從左到右的最大差價、從右到左的最大差價。將兩棵子樹合併成一棵子樹是這道題目的關鍵。通過使用update算出父節點的各個值,父節點的最大值即是子節點中的最大值,最小值即是子節點中的最小值,從左到右的最大差價即是左子樹本來的從左到右的最大差價,右子樹本來的從左到右的最大差價,右子樹的最大值減去左子樹的最小值這三者之間的最大值,從右到左的最大差價即是左子樹本來的

從右到左的最大差價,右子樹本來的從右到左的最大差價,左子樹的最大值減去右子樹的最小值這三者之間的最大值,

是op用來記錄是要查詢的是從左往右走,還是從右往左走,最後算出答案即可。

#include #include int n,m,x,y,op;

int a[200005];

struct treet[800005];

tree ans;

const int inf=1e9;

using namespace std;

inline int read()

while ((ch<'0')||(ch>'9')) ch=getchar();

while ((ch>='0')&&(ch<='9'))

return f*x;

}tree update(tree x,tree y)

inline void build(int root,int l,int r)

build(root<<1,l,(l+r)/2);

build(root<<1|1,(l+r)/2+1,r);

t[root]=update(t[root*2],t[root*2+1]);

}inline void find(int root,int l,int r)

if (l<=mid) find(root*2,l,r);

if (r>mid) find(root*2+1,l,r);

}int main()

if (x>y)

ans.mn=inf;

ans.mx=-inf;

ans.ls=ans.rs=0;

find(1,x,y);

if (op) printf("%d\n",ans.rs);

else printf("%d\n",ans.ls);

} return 0;

}

POJ 3304 Segments(計算幾何)

description 給出n條線段,問是否存在一條直線與這n條線段的任一條都相交 input 第一行一整數t表示用例組數,每組用例首先輸入一整數n表示線段數量,之後n行每行四個實數x1,y1,x2,y2分別表示線段兩端點橫縱座標 output 對於每組用例,如果存在一條直線與這n條線段的任一條都相...

poj3304 Segments 計算幾何

poj 3304 最近開始刷計算幾何了 公式好多完全不會 數學不行 幾何不行 記憶力不行 當機 查的題解 就當複習吧 這套專題拿來熟悉一下計算幾何模板 include include includeusing namespace std const double eps 1e 8 int sgn d...

POJ 3304 Segments 簡單幾何

題目大意 給出n條線段,現在問是否存在一條直線,使得所有線段向這條直線的投影存在乙個共同的交點 題目分析 題意有點抽象,需要轉換一下,因為所有的線段向某一條直線的投影存在乙個交點,那麼在那條直線上,從交點位置開始,沿著垂直於直線的方向做另一條直線,會發現這條直線與n條線段都存在乙個交點,也就是都相交...