雅禮集訓 2017 Day2 線段遊戲

2022-05-19 03:29:04 字數 2241 閱讀 3083

記憶體限制:256 mib 時間限制:1000 ms 標準輸入輸出

題目型別:傳統 評測方式:special judge

上傳者: 匿名

題目描述

給出若干條線段,用 (x1,y2),(x2,y2) 表示其兩端點座標,現在要求支援兩種操作:

輸入格式

第一行兩個正整數 n 、m 為初始的線段個數和操作個數。

接下來 n 行,每行四個整數,表示一條線段。

接下來 m 行,每行為乙個操作0 x1 y1 x2 y21 x0

輸出格式

對於每乙個詢問操作,輸出一行,為乙個實數,當你的答案與標準答案誤差不超過10^-2時,則視為正確。

樣例樣例輸入

3 4

0 -1 4 1

4 2 7 2

7 1 8 2

1 41 3

0 3 3 6 3

1 3

樣例輸出

2

0.53

資料範圍與提示

對於 10% 的資料,n,m≤1000;

對於另外 20%的資料,所有的 1 操作都在 0 操作之後;

對於另外 20% 的資料,所有線段的兩端的 x 座標都包含所有詢問的 x 座標,你可以將每條線段當做直線處理;

對於 100% 的資料,1≤n≤50000,1≤m≤150000 ,x1,x2,y1,y2均為整數,0

題意:在平面直角座標系中給你$n$條線段,$m$次詢問,每次詢問$x$處一條$y$值最大的線段。

題解:容易發現我們需要用乙個資料結構維護每個$x$處$y$最大的線段,支援查詢,修改操作。

考慮線段樹維護覆蓋$[l,r]$區間的$y$最大線段是否可行。

但如果兩條線段同時覆蓋$[l,r]$且交點在$[l,r]$內則無法確定取哪條。

換句話說,一條線段如果沒有被完爆就都是有貢獻的。

但如果我們考慮維護覆蓋$[l,r]$區間且在$mid$處$y$最大的線段呢?

(子區間不維護與父區間相同的線段)

這是一棵不下傳父節點標記的標記永久化線段樹,專業名詞叫做李超樹。

現在維護應該十分好想了。

**自網路dalao,侵刪)

每當在區間$[l,r]$更新一條線段時,

若該線段在$mid$處小於該區間原有線段

線段維護雙點或點截距均可。

**:

#include#include

#include

#include

using

namespace

std;

#define maxn 100005

#define maxm 500005

#define inf 0x7fffffff

#define ll long long

struct

node

}tree[maxn

<<2

];inline

intread()

double gety(int x0,int x1,int x2,double y1,double

y2)void build(int l,int r,int

k)void insert(int x1,int x2,double y1,double y2,int

k)

if(gety(mid,tree[k].x1,tree[k].x2,tree[k].y1,tree[k].y2)>gety(mid,x1,x2,y1,y2))

return

; }

if(x1<=mid) insert(x1,x2,y1,y2,k<<1

);

if(x2>mid) insert(x1,x2,y1,y2,k<<1|1

);

return;}

double query(int x0,int

k)int

main()

for(int i=1;i<=m;i++)

else

}return0;

}/*3 40 -1 4 1

4 2 7 2

7 1 8 2

1 41 3

0 3 3 6 3

1 3*/

雅禮集訓 2017 Day2 解題報告

我怎麼知道這種題目都能構造樹形結構。根據高度構造一棵樹,在樹上倍增找到最大的小於約束條件高度的隔板,開乙個 vector 記錄一下,然後對於每個 vector 按照高度排序一下,樹形 dp 即可 code below include define pii pair define mp make pa...

雅禮集訓 2017 價

傳送門 乙個不太顯然的最小割做法。我們這麼連邊 源點向藥物連 infty p i 容量的邊,藥物向它對應的藥材連 infty 容量的邊,藥材向匯點連 infty 容量的邊。用源點的流量減去最小割,再負回來就可以求出答案了。怎麼理解呢?割掉一條邊表示不選其對應的藥物或藥材,我們發現最後的方案一定是完美...

雅禮集訓 2017 Day5 珠寶

題目描述 miranda 準備去市裡最有名的珠寶展覽會,展覽會有可以購買珠寶,但可惜的是只能現金支付,miranda 十分糾結究竟要帶多少的現金,假如現金帶多了,就會比較危險,假如帶少了,看到想買的右買不到。展覽中總共有 n種珠寶,每種珠寶都只有乙個,對於第 i種珠寶,它的售價為 ci 萬元,對 m...