poj 1654 多邊形面積計算


本以為是個大水題,貼個模版就了事了,沒想到MLE,的確不能眼高手低

這個題目的memory卡的比較緊,先是MLE,后來是TLE,后來是WA。。。。各種可能的錯誤都有了,不過感覺除了MLE不是我的問題,

用get輸入不知道為什么TLE,然后后GCC提交是WA,最后改為g++才是AC,是int64所致?

回到正題,貼個求多邊形面積的連接http://zhidao.baidu.com/question/34974852.html

代碼

#include<stdio.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>
#define eps 1e-8
#define zero(x) (((x)>0?(x):-(x))<eps)
typedef struct{__int64 x,y;}point;
typedef struct{point a,b;}line;
int n;
char string[1000005];
inline __int64 xmult(point p1,point p2,point p0)
{
	return (p1.x-p0.x)*(p2.y-p0.y)-(p2.x-p0.x)*(p1.y-p0.y);
}
void graham_scan();
int main()
{
	int t,i;
	point now,s,last;
	char c;
	__int64 are;
	s.x=s.y=0;
	for(scanf("%d",&t);t;t--)
	{
		scanf("%s",string);
		i=0;
		are=0;
		now.x=now.y=0;
		while(string[i]!='5')
		{
			last=now;
			c=string[i];
			if(c=='8') now.y++;
			else if(c=='2') now.y--;
			else if(c=='4') now.x--;
			else if(c=='6') now.x++;
			else if(c=='7') 
			{
				now.y++;
				now.x--;
			}
			else if(c=='9')
			{
				now.y++;
				now.x++;
			}
			else if(c=='1')
			{
				now.x--;
				now.y--;
			}
			else if(c=='3')
			{
				now.x++;
				now.y--;
			}
			are+=xmult(s,last,now);
			i++;
		}
		if(are<0) are=-are;
		printf("%I64d",are/2);
		if(are&1) printf(".5");
		printf("\n");
	}
	return 0;
}



注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com