//pick 定理
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
LL area, ans;
struct point{
LL x, y;
};
point p[12000];
int main()
{
int i, t, cas = 1, n;
LL x1, y1, x2, y2, u, x, y;
cin >> t;
while(t--)
{
scanf("%d",&n);
for(i = 0; i < n; i++) scanf("%lld%lld",&p[i].x, &p[i].y);
area = ans = 0;
for(i = 0; i < n; i++)
area += (p[i].x*p[(i+1)%n].y - p[i].y*p[(i+1)%n].x);
if(area < 0) area = -area;
for(i = 0; i < n; i++)
{
x = p[i].x - p[(i+1)%n].x;
y = p[i].y - p[(i+1)%n].y;
if(x < 0) x = -x;
if(y < 0) y = -y;
ans += __gcd(x, y);
}
u = 1 + area/2 - ans/2;
printf("Case %d: %lld\n",cas++, u);
}
return 0;
}
Light oj 1418 Trees on My Island
最新推荐文章于 2021-02-17 13:26:15 发布