其實一眼看不出掃瞄線。
我們可以把每乙個點都變成乙個長寬為w和h的矩形。
左邊的邊是+w,右邊的邊是-w。
線段樹維護區間max和lazy tag。
然後掃瞄線求max。
**如下:
#include#define ll long longusing
namespace
std;
const
int maxn=20010
;int n,w,h,t,b[maxn<<1
],tot;
struct
nodetree[maxn
<<2
];struct
s s(
int xx,int yy1,int yy2,int ff)
}e[maxn
<<1
];inline
bool
cmp(s x,s y)
inline
void pushdown(int p,int l,int
r) tag(p)=0;}
inline
void add(int p,int l,int r,int x,int y,int
d)
int mid=(l+r)>>1
;
if(x<=mid) add(p<<1
,l,mid,x,y,d);
if(y>mid) add(p<<1|1,mid+1
,r,x,y,d);
pushdown(p
<<1
,l,mid);
pushdown(p
<<1|1,mid+1
,r);
mx(p)=max(mx(p<<1),mx(p<<1|1
));}
intmain()
sort(b+1,b+1+2*n);
tot=unique(b+1,b+1+2*n)-b-1
; sort(e+1,e+1+2*n,cmp);
ll ans=0
;
for(int i=1;i<=2*n;i++)
for(int i=1;i<=2*n;i++)
printf(
"%lld\n
",ans);
}return0;
}
P1502 視窗的星星
這道題還耗了我很久的時間,因為不懂得掃瞄線到底要怎麼做而一直翻了很多dalao的題解。這道題求的是乙個指定大小的矩形可以框住多少顆星星,他們的亮度總和最大。直接移動矩形不可行,我們將每顆星星轉換為每顆星星能被矩形框住的響應區域,不難發現也是矩形。為了不重複計算,我們只考慮在右上區域框住星星,不然會算...
P1502 視窗的星星(掃瞄線入門第一題)
提交2.78k 通過682 時間限制1.00s 記憶體限制125.00mb 提交 加入收藏 題目提供者cyrcyr 難度省選 noi 歷史分數100 提交記錄 檢視題解 高效能高階資料結構 檢視演算法標籤 進入討論版 檢視討論 檢視推薦 展開小卡買到了一套新房子,他十分的高興,在房間裡轉來轉去。晚上...
藍橋杯模擬題 天上的星星(字首和)
題目描述在乙個星光摧殘的夜晚,蒜頭君一顆一顆的數這天上的星星。蒜頭君給在天上巧妙的畫了乙個直角座標系,讓所有的星星都分布在第一象。天上有 nn 顆星星,他能知道每一顆星星的座標和亮度。現在,蒜頭君問自己 qq 次,每次他問自己每個矩形區域的星星的亮度和是多少 包含邊界上的星星 輸入格式第一行輸入乙個...