BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / acm-icpc / #5135同步于 2007/3/14
该镜像源已超过 30 天没有更新,可能在源站已被删除。
ACM_ICPC机器人发帖

[解题报告]1037 Pluto部落的传说II-残暴的酋长

hhllnnnn
2007/3/14镜像同步4 回复
1037解题报告 由于多边形所有的边都和广场的平行,所以的任意两条边的关系是平行或者垂直。所以我们就可以通过先求出所有的 水平边的长度总和,再求出所有的垂直边的长度。 求水平边的长度时,可以将所有的点排序,排序的方式是按照每个点的 y 坐标来排序,如果 y 坐标相等那么就按照 x 坐标来排序。然后将序列的每两个相邻的作为一组(一共 N 个点那么分成 N/2 组),然后计算它们之间的距离。 同理可求得所有竖直边的长度之和。最后两者相加即可。
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
yrtoo机器人#1 · 2007/3/16
帖下我的程序,不知道错在哪了,求人帮忙看看 程序如下: #include <iostream> using namespace std; struct Point { int X; int Y; }; inline bool IsUpper(const Point *p1, const Point *p2) { if(p1->Y > p2->Y) return true; if(p1->Y == p2->Y) { if(p1->X > p2->X) return true; else return false; } return false; } inline bool IsRight(const Point *p1, const Point *p2) { if(p1->X > p2->X) return true; if(p1->X == p2->X) { if(p1->Y > p2->Y) return true; else return false; } return false; } int main(void) { int numPoint = 0; cin >> numPoint; Point **pPoint = new Point*[numPoint]; int i = 0; int x = 0, y = 0; for(i = 0; i < numPoint; i++) { cin >> x >> y; Point *p = new Point; p->X = x; p->Y = y; pPoint[i] = p; } // Sort, the first one with the smallest Y for(i = 1; i < numPoint; i++) { Point *p = 0; for(int j = i; j > 0 && IsUpper(pPoint[j - 1], pPoint[j]); j--) { p = pPoint[j - 1]; pPoint[j - 1] = pPoint[j]; pPoint[j] = p; } } unsigned int s = 0; // distance int numPoint1 = numPoint/2; for(i = 0; i < numPoint1; i++) s += (pPoint[2*i + 1]->X - pPoint[2*i]->X); // Sort, the first one with the smallest X for(i = 1; i < numPoint; i++) { Point *p = 0; for(int j = i; j > 0 && IsRight(pPoint[j - 1], pPoint[j]); j--) { p = pPoint[j - 1]; pPoint[j - 1] = pPoint[j]; pPoint[j] = p; } } for(i = 0; i < numPoint1; i++) s += (pPoint[2*i + 1]->Y - pPoint[2*i]->Y); cout << s << endl; delete[] pPoint; pPoint = 0; return 0; } 【 在 hhllnnnn 的大作中提到: 】 : 1037解题报告 : 由于多边形所有的边都和广场的平行,所以的任意两条边的关系是平行或者垂直。所以我们就可以通过先求出所有的 : 水平边的长度总和,再求出所有的垂直边的长度。 : ...................
hhllnnnn机器人#2 · 2007/3/16
你好! 你的程序只能完成单组输入,而我们的测试数据有多组数据。 你应该这样: while(cin>>numPoint) { ..... }
dgj机器人#3 · 2007/3/16
顶h大牛
yrtoo机器人#4 · 2007/3/17
就是这了,看的不仔细 谢谢啦 [em68] 【 在 hhllnnnn 的大作中提到: 】 : 你好! : 你的程序只能完成单组输入,而我们的测试数据有多组数据。 : 你应该这样: : ...................