这道题目也是用到了pick定理
这题还有好多坑人的地方:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
using namespace std;
const int maxn=1000005;
char c[maxn];
int a[8]= {1,1,0,-1,-1,-1,0,1};
int b[8]= {0,1,1,1,0,-1,-1,-1};
int main()
{
long long sum,i,len;
long long xx,yy,xx1,yy1;
while(scanf("%s",c)!=EOF)//这里不能这样写 while(1){scanf("%s",c);}我试过,这样写一交就是超时!
{
len=strlen(c);
sum=0;
xx=0;
yy=0;
for(i=0; i<len; i++)
{
long long k=c[i]-'0';
xx1=xx+a[k];
yy1=yy+b[k];
sum+=xx1*yy-yy1*xx;
xx=xx1;
yy=yy1;
}
if(sum<0)
sum=-sum;
printf("%I64d\n",(sum+len)/2+1);//还有这里一定要%I64d输出!
}
return 0;
}
HDU 3775 pick 定理
最新推荐文章于 2016-11-18 13:27:00 发布