G++和C++ && POJ 1113 Wall

2020-11-23 08:57

阅读:611

标签:style   blog   os   io   2014   for   

PS: 次题目虽然叙述点的个数大于等于3但是并不保证凸包是否存在,所以还要判断一下。经常刷题的孩纸可能会遇到用C++ 可用AC的题目用G++ 却 Wrong Answer. 思考过为什么吗? 对于double 类型用%lf 输入用%lf输出是window 环境下VC的标准但不是真正的标准,对于double 类型 真正的标准是用%lf输入,用%f输出。所以把%.0lf改为%.0f 在G++环境下面就可用轻松AC了。

还有%lld 和 %I64d, 同时也学习一下控制精度的技巧,比如 printf("%d\n", (int)(ans+0.5)). 设置双精度下的毕竟函数等。

#include 
#include 
#include 
#include 
#include 
#include 

using namespace std;
const double eps = 1e-8;
const double pi = acos(-1.0);
const int maxn  = 1010;

struct point {
	double x, y;
	point(double x=0, double y=0):x(x),y(y) {}
};

int sign(double x) {
	if(fabs(x) 0 ? 1 : -1;
}
point operator - (point A, point B) {
	return point(A.x-B.x, A.y-B.y);
}
double Cross(point A, point B) {
	return A.x*B.y - A.y*B.x;
}
double mul(point P, point B, point C) {
	return Cross(B-P, C-P);
}
double dis2(point A, point B) {
	return (A.x-B.x)*(A.x-B.x)+(A.y-B.y)*(A.y-B.y);
}
double dis(point A, point B){
	double t1 = (A.x-B.x)*(A.x-B.x);
	double t2 = (A.y-B.y)*(A.y-B.y);
	return sqrt(t1+t2);
}
int n, l;
point p[maxn], q[maxn];
point s; // original.

bool cmp(point A, point B) {
	if(sign(mul(s, A, B))>0) return true;
	else if(sign(mul(s, A, B))==0 && dis2(s,A) 1 && sign(mul(b[newn-1], b[newn-2], a[i]))>=0)
			--newn;
		b[newn++] = a[i];
	}
	return newn;
}
int main() {
	scanf("%d%d", &n, &l);
	for(int i = 0; i 

G++和C++ && POJ 1113 Wall,搜素材,soscw.com

G++和C++ && POJ 1113 Wall

标签:style   blog   os   io   2014   for   

原文地址:http://blog.csdn.net/achiberx/article/details/24599435


评论


亲,登录后才可以留言!