Gym 101142 I.Integral Polygons 計算幾何 奇偶性 前綴和
阿新 • • 發佈:2018-09-24
sta cto namespace using lse nbsp fine esp pre
#include <stdio.h> #include <iostream> #include <stack> #include <vector> #include <math.h> #include <algorithm> #include <set> #include <queue> using namespace std; #define LL long long const int maxn=2e5+1; int meow[2][2][2]; int x[maxn],y[maxn]; intmain() { freopen("in.txt","r",stdin); int n; scanf("%d",&n); for(int i=0;i<n;i++) scanf("%d%d",x+i,y+i); for(int i=0;i<n;i++) { x[i]=(x[i]%2+2)&1; y[i]=(y[i]%2+2)&1; } x[n]=x[0],y[n]=y[0]; int area=0; LL ans=0; for(int i=1;i<=n;i++) { area^=(x[i]&y[i-1])^(x[i-1]&y[i]); for(int tx=0;tx<2;tx++) for(int ty=0;ty<2;ty++) { int t=(tx&y[i])^(ty&x[i]); ans+=meow[area^t][tx][ty]; } ans--; meow[area][x[i]][y[i]]++; }if(area) printf("0\n"); else cout<<ans<<endl; return 0; }
Gym 101142 I.Integral Polygons 計算幾何 奇偶性 前綴和