比赛 |
EYOI与SBOI开学欢乐赛5th |
评测结果 |
WWWWWWWWWWWWWWWWWWWW |
题目名称 |
卫星覆盖 |
最终得分 |
0 |
用户昵称 |
Skloud |
运行时间 |
0.599 s |
代码语言 |
C++ |
内存使用 |
38.61 MiB |
提交时间 |
2022-09-16 21:59:45 |
显示代码纯文本
#include<cstdio>
#include<iomanip>
#include<cmath>
using namespace std;
struct high{
int u,d;
high(){}
high(int a,int b){u=a,d=b;}
};
struct square{
int f,b,l,r;
int u,d,h;
square(){}
square(int x,int y,int z,int k)
{
f=y+k;b=y-k;l=x-k;r=x+k;u=z+k;d=z-k;h=2*k;
}
}s[101];
int n,x,y,z,r,ans;
int a[2010][2010];
high h[2000*2000+1];int tot;
square u,o;
int main()
{
freopen("satellitecover.in","r",stdin);
freopen("satellitecover.out","w",stdout);
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d%d%d%d",&x,&y,&z,&r);
x+=1000,y+=1000,z+=1000;
s[i]=square(x,y,z,r);
u=s[i];
for(int j=u.l;j<=u.r;j++)
{
for(int k=u.b;k<=u.f;k++)
{
if(a[j][k]==0)
{
a[j][k]==++tot;
h[tot]=high(u.u,u.d);
continue;
}
high p=h[a[j][k]];
h[a[j][k]]=high(max(p.u,u.u),min(p.d,u.d));
}
}
}
for(int i=1;i<=tot;i++)
{
ans+=h[i].u-h[i].d;
}
printf("%d\n",ans);
return 0;
}