http://poj.org/problem?id=1689
#include<iostream>
#include"vector"
#include"algorithm"
#define max(x,y) (((x)>(y))?(x):(y))
#define min(x,y) (((x)<(y))?(x):(y))
using namespace std;
struct point
{long x,y;};
struct type_dbx
{int n;
point d[50];
};
type_dbx dbx[50];
vector <long> x,y;
long mx,my;
int n;
char sign[50*50*2];
inline long cheng(point a,point b,point c)
{return (a.x-c.x)*(b.y-c.y)-(a.y-c.y)*(b.x-c.x);}
int in(point p[50],int n,point judge)
{int c,k,j;point up,low,temp;
c=0;
j=0;
while(p[j].y==judge.y)j++;
for(;j<n;j=k)
{k=j+1;
while(p[k%n].y==judge.y&&p[k%n].x>judge.x)k++;
up=p[j];
low=p[k%n];
if(up.y<low.y){temp=up;up=low;low=temp;}
if(up.y<judge.y||low.y>judge.y)continue;
if(cheng(low,up,judge)<=0&&k==j+1)continue;
c++;
}
return c%2;
}
int com(long a,long b)
{return a>b;}
int main()
{int t,m,i,j,k,h,l;long s,xz[50*50+4],yz[50*50+4];
point p;
cin>>t;
while(t--)
{cin>>mx>>my>>n;
mx*=2;my*=2;
m=2;
xz[0]=0;yz[0]=0;
xz[1]=mx;yz[1]=my;
for(i=0;i<n;i++)
{cin>>dbx[i].n;
for(j=0;j<dbx[i].n;j++)
{cin>>dbx[i].d[j].x>>dbx[i].d[j].y;
dbx[i].d[j].y=my/2-dbx[i].d[j].y;
dbx[i].d[j].x*=2;
dbx[i].d[j].y*=2;
xz[m]=dbx[i].d[j].x;yz[m]=dbx[i].d[j].y;m++;
}
}
x.resize(m);
y.resize(m);
for(i=0;i<m;i++){x[i]=xz[i];y[i]=yz[i];}
sort(x.begin(),x.end(),com);
sort(y.begin(),y.end(),com);
for(i=0;i<m+2;i++)sign[i]=0;
sign[1]=1;
s=0;
for(i=0;i<m-1;i++)
{
for(j=1;j<=m-1;j++)
{h=i;k=j-1;
for(l=0;l<n;l++)
{p.x=x[k]-1;
p.y=y[h]-1;
if(in(dbx[l].d,dbx[l].n,p))break;
}
if(l<n){sign[j]=0;continue;}
if(sign[j]||sign[j-1])sign[j]=1;
else {sign[j]=0;s+=(x[k]-x[k+1])*(y[h]-y[h+1]);}
// cout<<x[k]<<' '<<x[k+1]<<' '<<y[h]<<' '<<y[h+1]<<endl;}
}
}
cout<<s/4<<endl;
}
return 0;
}
Meta
-
Recent Posts
Recent Comments
Archives
- May 2024
- April 2023
- February 2023
- January 2023
- December 2022
- November 2022
- September 2022
- June 2022
- July 2021
- January 2021
- February 2020
- September 2019
- March 2018
- February 2018
- August 2016
- July 2016
- June 2016
- May 2016
- April 2016
- March 2016
- February 2016
- January 2016
- December 2015
- November 2015
- October 2015
- September 2015
- August 2015
- July 2015
- June 2015
- May 2015
- April 2015
- March 2015
- February 2015
- January 2015
- December 2014
- November 2014
- October 2014
- September 2014
- August 2014
- July 2014
- June 2014
- May 2014
- April 2014
- March 2014
- February 2014
- January 2014
- December 2013
- November 2013
- October 2013
- September 2013
- August 2013
- July 2013
- June 2013
- May 2013
- April 2013
- March 2013
- February 2013
- January 2013
- December 2012
- November 2012
- October 2012
- September 2012
- August 2012
- July 2012
- June 2012
- May 2012
- April 2012
- March 2012
- February 2012
- January 2012
- December 2011
- November 2011
- October 2011
- September 2011
- August 2011
- July 2011
- June 2011
- May 2011
- April 2011
- March 2011
- February 2011
- January 2011
- December 2010
- November 2010
- October 2010
- September 2010
- August 2010
- July 2010
- June 2010
- May 2010
- April 2010
- March 2010
- February 2010
- January 2010
- December 2009
- November 2009
- October 2009
- September 2009
- August 2009
- July 2009
- June 2009
- May 2009
- April 2009
- March 2009
- February 2009
Categories
