设为首页 加入收藏

TOP

POJ 1265 多边形格点数Pick公式(二)
2015-11-21 02:13:25 来源: 作者: 【 】 浏览:40
Tags:POJ 1265 多边形 点数 Pick 公式
- b.y));} void in(){ scanf("%lf %lf", &x, &y); } void out(){ printf("%.2f %.2f\n", x, y); } }; struct Line { Point s, t; Line() {} Line(const Point &s, const Point &t):s(s), t(t) {} void in() { s.in(),t.in(); } double pointDistLine(const Point &p) { if(sgn(dot(t - s, p - s)) < 0)return dist(p, s); if(sgn(dot( s - t, p - t)) < 0)return dist(p, t); return fabs(det(t - s, p - s)) / dist(s, t); } bool pointOnLine(const Point &p) { return sgn(det(t - s, p - s)) == 0 && sgn(dot(s - p, t - p)) <= 0; } }; struct Poly //多边形类 { vector a; void in(const int &r) { a.resize(r + 1); for(int i = 1; i <= r; i++) { a[i].in(); //点坐标累加,这个刚开始不懂,所以样例一直出不来 a[i] = a[i - 1] + a[i]; //因为是移动的方位,所以坐标就是累加的了 } a.resize(r); } //计算多边形的周长 double perimeter() { double sum=0; int n=a.size(); for(int i=0;i 0&&d1<=0&&d2>0) num++; if(k<0&&d2<=0&&d1>0) num--; } return num!=0; } //计算多边形边界的格点数 int border() { int num=0,i,n=a.size(); for(i=0;i >T; for(i=1;i<=T;i++) { int n; cin>>n; poly.in(n); printf("Scenario #%d:\n",i); printf("%d %d %.1f\n\n",poly.inside(),poly.border(),poly.getDArea()); } return 0; }


首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇蓝桥杯-代码填空之四 下一篇uC/OSIII的消息队列处理机制

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: