xdu_1064:Desolator in RA2

时间:2023-03-09 05:21:02
xdu_1064:Desolator in RA2

问题转化为,单个面积*2-交面积。下面求交面积。把直角坐标系中全部转90°,每个方块的坐标都做相应变化,这样会发现新的坐标系中空出了一部分方块,找规律发现,若求交矩形包含的方框数,其中恰好一半是前面空出来的方块。所以实际交面积=转换后坐标系上交矩形面积/2。

题面链接:http://acm.xidian.edu.cn/problem.php?id=1064

 #include <bits/stdc++.h>
 using namespace std;
 typedef long long LL;

 struct point
 {
     LL x,y;
 };

 LL S(LL r)
 {
     LL d=*r+;
     )/;
 }

 LL xxx(point A,point B)
 {
     LL x=abs(A.x+A.y-B.x-B.y)+;
     LL y=abs(A.x-A.y-B.x+B.y)+;
     )/;
 }

 int main()
 {
     LL x1,x2,y1,y2,r,x,y;
     while(cin>>x1>>y1>>x2>>y2>>r)
     {
         point p;
         p.x=x=abs(x1-x2);
         p.y=y=abs(y1-y2);
         *r)
         {
             cout<<*S(r)<<'\n';
             continue;
         }
         point A,B;
         if(abs(x)+abs(y-r)<=r)
         {
             A.x=,A.y=r;
             B.x=x,B.y=y-r;
         }
         else
         {
             A.x=r,A.y=;
             B.x=x-r,B.y=y;
         }
         cout<<*S(r)-xxx(A,B)<<'\n';
     }
 }