/*之前一直偷懶離散化+暴力做著題 今天搞一下掃瞄線
自己按照線段樹的一般寫法寫的有些問題
因為不用於以前的區間sum
so題解搬運者23333
orz~ 去掉了打標記的過程
同時更新區間的時候先判斷是不是已經需要賦值
還有一些細節的處理
線段樹是離散化之後的x軸建的
每個線段的權值轉移到點上
每個點代表他右側一小段的長度
所以修改[l,r]變為[l,r-1]
另外維護lazy 表示這個區間壓了幾次
只要lazy[k]>0 s[k]就存著值
碰到頂邊就lazy--
每次計算面積用的是s[1] 也就是整個線段的覆蓋部分
對於每次的修改時候查詢的時候只是上傳 最後拿s[1]計算
所以不用下放lazy了就
*/#include
#include
#include
#include
#define maxn 1010
#define lc k*2
#define rc k*2+1
#define mid (l+r)/2
using
namespace
std;
int n,m,lazy[maxn*4
];double b[maxn],s[maxn*4
],ans;
struct
nodea[maxn];
int cmp(const node &x,const node &y)
void up(int k,int l,int
r)void change(int k,int l,int r,int x,int y,int
z)
if(x<=mid)change(lc,l,mid,x,y,z);
if(y>mid)change(rc,mid+1
,r,x,y,z);
up(k,l,r);
}int
main()
sort(b+1,b+1+m);sort(a+1,a+1+m,cmp);
for(int i=1;i<=m;i++)
printf(
"%.2f\n
",ans);
}return0;
}
CODEVS 3044 矩形面積求並
描述 輸入n個矩形,求他們總共占地面積 也就是求一下面積的並 分析 其實上面的部落格講的講的就很清楚了.就相當於把矩形用許多小矩形來代替.這些小矩形都是有一邊或幾條邊延長後過其他矩形的頂點.這麼一說好像更複雜了.換個說法,就是把所有矩形的邊都作為可無限延長的分割線,將所有矩形分割成小矩形.每個小矩形...
CodeVS3044矩形面積求並
codevs3044矩形面積求並 題解 題目描述 description 輸入n個矩形,求他們總共占地面積 也就是求一下面積的並 輸入描述 input description 可能有多組資料,讀到n 0為止 不超過15組 每組資料第一行乙個數n,表示矩形個數 n 100 接下來n行每行4個實數x1,...
codevs3044 矩形面積求並
這幾天入了資料結構的坑,其實簡單的線段樹 樹狀陣列 左偏樹之類的以前就會的,但是不是很會應用,特別是例如優化dp 擴充套件到高維這些應用上就是渣啊,因為之前對離散化不了解,所以看了hwzer的 好久都沒懂,到最後發現原來這個線段樹維護的並不是乙個數軸,只是乙個陣列而已,乙個陣列有被標記的元素,然後用...