18RE求助,肯定不是数组大小问题
查看原帖
18RE求助,肯定不是数组大小问题
1034667
Elysian_Realme楼主2024/8/6 10:51

改了好几遍还是 RE 所以直接用了 vector。

// Problem: P5490 【模板】扫描线&&矩形面积并
// Contest: Luogu
// URL: https://www.luogu.com.cn/problem/P5490
// Memory Limit: 512 MB
// Time Limit: 1000 ms
// 
// By:lmq
// AC Time:2024-08-06 09:27:34

#include <bits/stdc++.h>
#define int long long
#define lc tree[i].ls
#define rc tree[i].rs
#define mot ((tree[i].r+tree[i].l)>>1)
using namespace std;
inline int read(){
	int x=0,f=1;char ch=getchar();
	while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}
	while (ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}
	return x*f;
}
inline void print(int x){
	static int s[20],t=0;
	do s[++t]=x%10,x/=10;while(x);
	while(t) putchar(s[t--] + '0');
}
const int N=1e5+5;
struct node{
	int l,r;
	int ls,rs;
	int sm,ct;
};vector<node> tree;
struct line{
	int x,y,l,ct;
	bool operator<(line b)const{
		return y<b.y;
	}
};
int n,tp;
vector<line> a;
void build(int l,int r){
	tree.push_back({0,0,0,0,0,0});
	tree.push_back({l,r,0,0,0,0});
	++tp;
}
void push_down(int i){
	if(!lc){
		lc=++tp,rc=++tp;
		tree.push_back({tree[i].l,mot});
		tree.push_back({mot+1,tree[i].r});
	}
}
void push_up(int i){
	if(tree[i].ct)tree[i].sm=(tree[i].r-tree[i].l+1);
	else tree[i].sm=tree[lc].sm+tree[rc].sm;
}
void upd(int i,int l,int r,int k){
	if(tree[i].l>=l&&tree[i].r<=r){
		tree[i].ct+=k;
		push_up(i);
		return;
	}
	push_down(i);
	if(l<=mot)
		upd(lc,l,r,k);
	if(r>mot)
		upd(rc,l,r,k);
	push_up(i);
}
signed main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		int x=read(),yl=read(),c=read(),yh=read();
		int l=c-x;
		a.push_back({x,yh,l,-1});
		a.push_back({x,yl,l,1});
	}
	build(0,1e9);
	sort(a.begin(),a.end());
	int ans=0;
	for(int i=0;i<a.size();i++){
		int x=a[i].x,l=a[i]	.l,ct=a[i].ct;
		ans+=tree[1].sm*(a[i].y-a[i-1].y);
		upd(1,x,x+l-1,ct);
	}
	cout<<ans<<endl;
	return 0;
}
// 某一日,祂从天坠落。人们抬头仰望,于是看见了星空。
// 星月送来神的女儿,她愿成为人的伴侣。
// 长风化作她的轺车,四海落成她的园圃。鸟雀衔来善的种子,百花编织爱的颂歌。
// 她便是这样降生于世,行于大地,与人类一同长大,与世界一起发芽。
// 而今,「终焉」之时将至。
// 而今,「归去」之时已至。
// 就此告别吧,美丽的世界。
// 此后,将有「群星」闪耀,因为我如今来过。
// 此后,将有「百花」绽放,因为我从未离去。
// 请将我的箭、我的花、与我的爱,织成新生的种子,带向那枯萎的大地。
// 然后,便让它开出永恒而无瑕的…「人性之华」吧。
// 「我名为爱莉希雅……」
// 「最初的律者,人之律者。」
2024/8/6 10:51
加载中...