提交2.78k
通過682
時間限制1.00s
記憶體限制125.00mb
提交**
加入收藏
題目提供者cyrcyr
難度省選/noi-
歷史分數100
提交記錄
檢視題解
高效能高階資料結構
檢視演算法標籤
進入討論版
檢視討論
檢視推薦
展開小卡買到了一套新房子,他十分的高興,在房間裡轉來轉去。
晚上,小卡從陽台望出去,「哇~~~~好多星星啊」,但他還沒給其他房間設乙個窗戶,天真的小卡總是希望能夠在晚上能看到最多最亮的星星,但是窗子的大小是固定的,邊也必須和地面平行。這時小卡使用了超能力(透視術)知道了牆後面每個星星的位置和亮度,但是小卡發動超能力後就很疲勞,只好拜託你告訴他最多能夠有總和多亮的星星能出現在視窗上。
本題有多組資料,第一行為t 表示有t組資料t<=10
對於每組資料
第一行3個整數n,w,h,(n<=10000,1<=w,h<=1000000)表示有n顆星星,視窗寬為w,高為h。
接下來n行,每行三個整數xi,yi,li 表示星星的座標在(xi,yi),亮度為li。(0<=xi,yi<2^31)
t個整數,表示每組資料中視窗星星亮度總和的最大值。
輸入 #1複製
2輸出 #1複製3 5 4
1 2 3
2 3 2
6 3 1
3 5 4
1 2 3
2 3 2
5 3 1
5小卡買的窗戶框是金屬做的,所以在邊框上的不算在內。6
思路:就是掃瞄線的板子題,在這裡記錄一下自己理解的掃瞄線:
線段樹維護y軸區間,x軸暴力,這是掃瞄線的精髓。 相當於一條條線沿著x軸掃過去,看一下為什麼這樣能解決問題:
把每乙個星星作為左下角,在它的右上方劃出一片視窗大小的區域,表示只要視窗的右上角落在這一片區域裡就一定能覆蓋到這顆星星。
那麼不同星星的重疊部分就代表能同時覆蓋這幾顆星星了。
(下圖中(這裡是以星星為左下角,兩種方式都行),只要視窗落在陰影部分,就能同時覆蓋到三顆星星)
看**:
#include#include#include
#include
#include
using
namespace
std;
const
int maxn=4e4+5
;typedef
long
long
ll;ll ly[maxn
<<2];//
存所有的y 離散化
ll lazy[maxn<<2],ma[maxn<<2];//
線段樹延遲標記 存最大值
int len;//
struct
node
node[maxn<<2];//
存下所有的邊
bool cmp(const node a,const
node b)
void
push_down(ll rt)
void
update(ll l,ll r,ll rt,ll l,ll r,ll v)
ll mid=(l+r)>>1
;
if(lazy[rt]) push_down(rt);
if(l<=mid) update(l,mid,rt<<1
,l,r,v);
if(r>mid) update(mid+1,r,rt<<1|1
,l,r,v);
ma[rt]=max(ma[rt<<1],ma[rt<<1|1
]);}
ll getid(ll x)
intmain()
sort(ly+1,ly+p1+1
); len=unique(ly+1,ly+p1+1)-(ly+1
); sort(node+1,node+p+1
,cmp);
//for(int i=1;i<=p;i++) cout
;
for(int i=1;i<=p;i++)//
遍歷所有的邊
printf(
"%lld\n
",ans);
}return0;
}/**2
3 5 4
1 2 3
2 3 2
6 3 1
*/
P1502 視窗的星星
這道題還耗了我很久的時間,因為不懂得掃瞄線到底要怎麼做而一直翻了很多dalao的題解。這道題求的是乙個指定大小的矩形可以框住多少顆星星,他們的亮度總和最大。直接移動矩形不可行,我們將每顆星星轉換為每顆星星能被矩形框住的響應區域,不難發現也是矩形。為了不重複計算,我們只考慮在右上區域框住星星,不然會算...
Luogu 1502 視窗的星星 題解 掃瞄線
其實一眼看不出掃瞄線。我們可以把每乙個點都變成乙個長寬為w和h的矩形。左邊的邊是 w,右邊的邊是 w。線段樹維護區間max和lazy tag。然後掃瞄線求max。如下 include define ll long long using namespace std const int maxn 200...
P3353 在你窗外閃耀的星星
飛逝的的時光不會模糊我對你的記憶。難以相信從我第一次見到你以來已經過去了3年。我仍然還生動地記得,3年前,在美麗的集美中學,從我看到你微笑著走出教室,你將頭向後仰,柔和的晚霞照耀著你玫瑰色的臉頰。我明白,我已經沉醉於你了。之後,經過幾個月的觀察和窺探,你的優雅與智慧型,你對待生活的態度和你對未來的願...